https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65802
--- Comment #5 from vries at gcc dot gnu.org --- Before the patch series, at 011.cfg we had this representation: ... ;; basic block 2, loop depth 0, count 0, freq 0, maybe hot ;; prev block 0, next block 3, flags: (NEW, REACHABLE) ;; pred: ENTRY (FALLTHRU) D.2342 = cD.2333.gp_offsetD.5; if (D.2342 >= 48) goto <bb 4>; else goto <bb 3>; ;; succ: 4 (TRUE_VALUE) ;; 3 (FALSE_VALUE) ;; basic block 3, loop depth 0, count 0, freq 0, maybe hot ;; prev block 2, next block 4, flags: (NEW, REACHABLE) ;; pred: 2 (FALSE_VALUE) D.2344 = cD.2333.reg_save_areaD.8; D.2345 = cD.2333.gp_offsetD.5; D.2346 = (sizetype) D.2345; addr.0D.2339 = D.2344 + D.2346; D.2347 = cD.2333.gp_offsetD.5; D.2348 = D.2347 + 8; cD.2333.gp_offsetD.5 = D.2348; goto <bb 5>; ;; succ: 5 (FALLTHRU) ;; basic block 4, loop depth 0, count 0, freq 0, maybe hot ;; prev block 3, next block 5, flags: (NEW, REACHABLE) ;; pred: 2 (TRUE_VALUE) D.2349 = cD.2333.overflow_arg_areaD.7; addr.0D.2339 = D.2349; D.2350 = D.2349 + 8; cD.2333.overflow_arg_areaD.7 = D.2350; ;; succ: 5 (FALLTHRU) ;; basic block 5, loop depth 0, count 0, freq 0, maybe hot ;; prev block 4, next block 6, flags: (NEW, REACHABLE) ;; pred: 3 (FALLTHRU) ;; 4 (FALLTHRU) d.1D.2351 = MEM[(intD.9 * * {ref-all})addr.0D.2339]; dD.2334 = d.1D.2351; eD.2335 = &dD.2334; __asm__("" : "=d" eD.2335); [LP 1] # USE = anything # CLB = anything m_fn1D.2327 (&aD.2330); ;; succ: 9 (EH) ;; 6 (FALLTHRU) ... There's no exception connected to the whole va_arg sequence. So the question is: should ifn_va_arg have ECF_NOTHROW?