[Bug tree-optimization/65802] [6 Regression] ICE in redirect_eh_edge_1, at tree-eh.c:2335

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Apr 19 21:37:00 GMT 2015


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?



More information about the Gcc-bugs mailing list