This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][4/5] Handle internal_fn in operand_equal_p
- From: Richard Biener <rguenther at suse dot de>
- To: Tom de Vries <Tom_deVries at mentor dot com>
- Cc: Jakub Jelinek <jakub at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Michael Matz <matz at suse dot de>
- Date: Thu, 19 Feb 2015 13:44:46 +0100 (CET)
- Subject: Re: [PATCH][4/5] Handle internal_fn in operand_equal_p
- Authentication-results: sourceware.org; auth=none
- References: <54E5BB06 dot 2080102 at mentor dot com> <54E5C403 dot 7050606 at mentor dot com>
On Thu, 19 Feb 2015, Tom de Vries wrote:
> On 19-02-15 11:29, Tom de Vries wrote:
> > Hi,
> >
> > I'm posting this patch series for stage1:
> > - 0001-Disable-lang_hooks.gimplify_expr-in-free_lang_data.patch
> > - 0002-Add-gimple_find_sub_bbs.patch
> > - 0003-Factor-optimize_va_list_gpr_fpr_size-out-of-pass_std.patch
> > - 0004-Handle-internal_fn-in-operand_equal_p.patch
> > - 0005-Postpone-expanding-va_arg-until-pass_stdarg.patch
> >
> > The patch series - based on Michael's initial patch - postpones expanding
> > va_arg
> > until pass_stdarg, which makes pass_stdarg more robust.
> >
> > Bootstrapped and reg-tested on x86_64 using all languages, with unix/ and
> > unix/-m32 testing.
> >
> > I'll post the patches in reply to this email.
> >
>
> This patch adds handling of internal functions in operand_equal_p.
>
> I ran into a situation here in operand_equal_p where it segfaulted on the
> internal function IFN_VA_ARG, because the CALL_EXPR_FN of an internal
> function is NULL, and operand_equal_p does not expect NULL arguments:
> ...
> case CALL_EXPR:
> /* If the CALL_EXPRs call different functions, then they
> clearly can not be equal. */
> if (! operand_equal_p (CALL_EXPR_FN (arg0), CALL_EXPR_FN (arg1),
> flags))
> return 0;
> ...
>
> This patch fixes that by testing if CALL_EXPR_FN is NULL.
>
> OK for stage1?
I'd call it a bug though, and we do have internal fns in
generic already thus the issue is latent (with ubsan at least).
Which means ok for trunk now.
Thanks,
Richard.