This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Disable IPA-SRA for always_inline functions
- From: Richard Biener <rguenther at suse dot de>
- To: Martin Jambor <mjambor at suse dot cz>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 2 Apr 2014 14:29:55 +0200 (CEST)
- Subject: Re: [PATCH] Disable IPA-SRA for always_inline functions
- Authentication-results: sourceware.org; auth=none
- References: <20140402122742 dot GA19304 at virgil dot suse>
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,
Richard.
> Thanks,
>
> Martin
>
>
> 2014-04-01 Martin Jambor <mjambor@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,15 @@ ipa_sra_preliminary_function_checks (str
> if (TYPE_ATTRIBUTES (TREE_TYPE (node->decl)))
> return false;
>
> + if (lookup_attribute ("always_inline",
> + DECL_ATTRIBUTES (node->decl)) != NULL)
> + {
> + if (dump_file)
> + fprintf (dump_file, "Allways inline function will be inlined "
> + "anyway. \n");
> + return false;
> + }
> +
> return true;
> }
>
>
>
--
Richard Biener <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer