[Bug tree-optimization/59519] [4.9 Regression] ICE on valid code at -O3 on x86_64-linux-gnu in slpeel_update_phi_nodes_for_guard1, at tree-vect-loop-manip.c:486

amker.cheng at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Dec 19 14:45:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59519

--- Comment #4 from bin.cheng <amker.cheng at gmail dot com> ---
First clue.

b_lsm.11_13 is recognized as chrec {1, +, 1}_2 with the patch, thus the loop
can be vectorized now.

  <bb 5>:

  <bb 6>:
  # b.4_30 = PHI <b.4_12(5), 1(12)>
  # prephitmp_28 = PHI <c.1_9(5), c.1_21(12)>
  # b_lsm.11_13 = PHI <b.4_12(5), 1(12)>
  # ivtmp_46 = PHI <ivtmp_45(5), 13(12)>
  c.1_9 = prephitmp_28 | 1;
  b.4_12 = b.4_30 + 1;
  ivtmp_45 = ivtmp_46 - 1;
  if (ivtmp_45 != 0)
    goto <bb 5>;
  else
    goto <bb 7>;

Problem arises in calling stack like:
vect_do_peeling_for_loop_bound
  slpeel_tree_peel_loop_to_edge
    slpeel_update_phi_nodes_for_guard1
for phi node : # b_lsm.11_13 = PHI <b.4_12(5), 1(12)>

It looks like loop peeling has difficulty in coping with peeled phi node.



More information about the Gcc-bugs mailing list