This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] propagate malloc attribute in ipa-pure-const pass


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]