This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, PR 60266] Fix problem with mixing -O0 and -O2 in propagate_constants_accross_call
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jan Hubicka <hubicka at ucw dot cz>
- Date: Fri, 21 Feb 2014 18:28:54 +0100
- Subject: Re: [PATCH, PR 60266] Fix problem with mixing -O0 and -O2 in propagate_constants_accross_call
- Authentication-results: sourceware.org; auth=none
- References: <20140221144002 dot GB26239 at virgil dot suse>
> Hi,
>
> in propagate_constants_accross_call we expect a thunk to have at least
> one parameter and thus an ipa-prop parameter descriptor. However,
> when the callee comes from a CU that was compiled with -O0, there are
> no parameter descriptors and we fail an index checking assert.
>
> This patch fixes it by bailing out early if there are no parameter
> descriptors because in that case there is nothing to do in that
> function anyway. Bootstrap and testing in progress, OK for trunk if
> it passes?
>
> Thanks,
>
> Martin
>
>
> 2014-02-21 Martin Jambor <mjambor@suse.cz>
>
> PR ipa/60266
> * ipa-cp.c (propagate_constants_accross_call): Bail out early if
> there are no parameter descriptors.
Actually I have similar patch in my tree for few days since I hit the problem
while building libreoffice.
OK.
Honza
>
> diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
> index 7d8bc05..4c9ab12 100644
> --- a/gcc/ipa-cp.c
> +++ b/gcc/ipa-cp.c
> @@ -1428,6 +1428,8 @@ propagate_constants_accross_call (struct cgraph_edge *cs)
> args = IPA_EDGE_REF (cs);
> args_count = ipa_get_cs_argument_count (args);
> parms_count = ipa_get_param_count (callee_info);
> + if (parms_count == 0)
> + return false;
>
> /* If this call goes through a thunk we must not propagate to the first (0th)
> parameter. However, we might need to uncover a thunk from below a series