public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jan Hubicka <hubicka@ucw.cz>
To: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Cc: gcc Patches <gcc-patches@gcc.gnu.org>,
	Richard Biener <rguenther@suse.de>
Subject: Re: [RFC] propagate malloc attribute in ipa-pure-const pass
Date: Fri, 27 Oct 2017 12:44:00 -0000	[thread overview]
Message-ID: <20171027122702.GD64719@kam.mff.cuni.cz> (raw)
In-Reply-To: <CAAgBjMnD5XFhqM7WEN0Jtq2JXscHhAp1FMnkszybBaCUAOVeOA@mail.gmail.com>

> On 25 October 2017 at 20:44, Jan Hubicka <hubicka@ucw.cz> wrote:
> >> On 24 October 2017 at 16:26, Jan Hubicka <hubicka@ucw.cz> wrote:
> >> >> 2017-10-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
> >> >>
> >> >>       * cgraph.h (set_malloc_flag): Declare.
> >> >>       * cgraph.c (set_malloc_flag_1): New function.
> >> >>       (set_malloc_flag): Likewise.
> >> >>       * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
> >> >>       * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
> >> >>       false.
> >> >>       (read_ipa_call_summary): Add support for reading is_return_callee.
> >> >>       (write_ipa_call_summary): Stream is_return_callee.
> >> >>       * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
> >> >>       * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
> >> >>       ipa-prop.h, ipa-fnsummary.h.
> >> >>       (pure_const_names): Change to static.
> >> >>       (malloc_state_e): Define.
> >> >>       (malloc_state_names): Define.
> >> >>       (funct_state_d): Add field malloc_state.
> >> >>       (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
> >> >>       (check_retval_uses): New function.
> >> >>       (malloc_candidate_p): Likewise.
> >> >>       (analyze_function): Add support for malloc attribute.
> >> >>       (pure_const_write_summary): Stream malloc_state.
> >> >>       (pure_const_read_summary): Add support for reading malloc_state.
> >> >>       (dump_malloc_lattice): New function.
> >> >>       (propagate_malloc): New function.
> >> >>       (ipa_pure_const::execute): Call propagate_malloc and
> >> >>       ipa_free_fn_summary.
> >> >>       (pass_local_pure_const::execute): Add support for malloc attribute.
> >> >>       * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
> >> >>
> >> >> testsuite/
> >> >>       * gcc.dg/ipa/propmalloc-1.c: New test-case.
> >> >>       * gcc.dg/ipa/propmalloc-2.c: Likewise.
> >> >>       * gcc.dg/ipa/propmalloc-3.c: Likewise.
> >> >
> >> > OK.
> >> > Perhaps we could also add -Wsuggest-sttribute=malloc and mention it in changes.html?
> >> Done in this version.
> >> In warn_function_malloc(), I passed false for known_finite param to
> >> suggest_attribute().
> >> Does that look OK ?
> >> Validation in progress. OK to commit if passes ?
> >
> > OK, thanks!
> Thanks, committed as r254140 after following validation:
> 1] Bootstrap+test with --enable-languages=all,ada,go on
> x86_64-unknown-linux-gnu and ppc64le-linux-gnu.
> 2] LTO bootstrap+test on x86_64-unknown-linux-gnu and ppc64le-linux-gnu
> 3] Cross tested on arm*-*-* and aarch64*-*-*.
> 
> Would it be a good idea to extend ipa-pure-const to propagate
> alloc_size/alloc_align and returns_nonnull attributes ?
> Which other attributes would be useful to propagate in ipa-pure-const ?

Also one extension I was considering was TBAA mod-ref pass. I.e. propagate what
types are read/stored by the call, rather than having just pure/const (no stores,
no reads at all).

This will be bit fun to implement in IPA, but it may be useful.  If you would
be interested in looking into this, we can discuss it (I wanted to implement it
this stage1 but I think I have way too many other plans).

LLVM also has nocapture that seems useful for PTA. Richi may have useful
opinions on that ;)

Honza

  parent reply	other threads:[~2017-10-27 12:27 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15 10:56 Prathamesh Kulkarni
2017-05-16  1:14 ` Jeff Law
2017-05-16 11:48 ` Richard Biener
2017-05-17 21:22 ` Martin Sebor
2017-05-18  7:07   ` Richard Biener
2017-05-19 13:18     ` Jan Hubicka
2017-05-19 13:34 ` Jan Hubicka
2017-05-23 13:48   ` Prathamesh Kulkarni
2017-07-31 18:23     ` Prathamesh Kulkarni
2017-08-08  4:21       ` Prathamesh Kulkarni
2017-08-17 12:55         ` Prathamesh Kulkarni
2017-09-01  2:39           ` Prathamesh Kulkarni
2017-09-15 12:19             ` Prathamesh Kulkarni
2017-09-25 18:13               ` Prathamesh Kulkarni
2017-09-26  0:24                 ` Jan Hubicka
2017-09-27  1:11                   ` Prathamesh Kulkarni
2017-09-29 19:28                     ` Jan Hubicka
2017-10-06  2:16                       ` Prathamesh Kulkarni
2017-10-06 13:04                         ` Jan Hubicka
2017-10-07  1:46                           ` Prathamesh Kulkarni
2017-10-07 19:35                             ` Jan Hubicka
2017-10-07 22:17                               ` Prathamesh Kulkarni
2017-10-13 23:34                                 ` Prathamesh Kulkarni
2017-10-23  9:37                                   ` Prathamesh Kulkarni
2017-10-24 10:57                                   ` Jan Hubicka
2017-10-25 11:18                                     ` Prathamesh Kulkarni
2017-10-25 15:26                                       ` Jan Hubicka
2017-10-27 10:52                                         ` Prathamesh Kulkarni
2017-10-27 12:20                                           ` Jan Hubicka
2017-10-27 12:44                                           ` Jan Hubicka [this message]
2017-10-27 13:00                                             ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171027122702.GD64719@kam.mff.cuni.cz \
    --to=hubicka@ucw.cz \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=prathamesh.kulkarni@linaro.org \
    --cc=rguenther@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).