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.