Hi, On Wed, Apr 02, 2014 at 02:29:55PM +0200, Richard Biener wrote: > On Wed, 2 Apr 2014, Martin Jambor wrote: > > > Hi, > > > > when dealing with a PR yesterday I have noticed that IPA-SRA was > > modifying an always_inline function which is useless work since the > > function must then be inlined anyway. Thus I'd like to propose the > > following simple change disabling it in such cases. > > > > Included in a bootstrap and testing on x86_64-linux. OK for trunk now > > or in the next stsge1? > > Ok for next stage1, but please short-cut the lookup_attribute > with a DECL_DISREGARD_INLINE_LIMITS () check. Maybe even > abstract this away into a predicate on the cgraph node. >
Thanks, after discussing it with Honza, this is what I am going to commit after re-testing. Martin 2014-04-14 Martin Jambor <mjam...@suse.cz> * tree-sra.c (ipa_sra_preliminary_function_checks): Skip always_inline functions. Index: src/gcc/tree-sra.c =================================================================== --- src.orig/gcc/tree-sra.c +++ src/gcc/tree-sra.c @@ -4960,6 +4960,14 @@ ipa_sra_preliminary_function_checks (str if (TYPE_ATTRIBUTES (TREE_TYPE (node->decl))) return false; + if (DECL_DISREGARD_INLINE_LIMITS (node->decl)) + { + if (dump_file) + fprintf (dump_file, "Always inline function will be inlined " + "anyway. \n"); + return false; + } + return true; }