http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60183
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2014-02-14 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Doesn't abort for me. phiprop does Inserting PHI for result of load _6 = *y_5; for edge defining &c inserting load _19 = MEM[(long unsigned int *)&c]; for edge defining y_13 inserting load _20 = *y_13; _6 = PHI <_19(2), _20(3)> on <bb 2>: w_4 = *x_2(D); goto <bb 4>; <bb 3>: _6 = *y_5; w_8 = _6 ^ w_7; _9 = MEM[(long unsigned int *)y_5 + 8B]; w_10 = w_8 + _9; _11 = MEM[(long unsigned int *)y_5 + 16B]; w_12 = w_10 ^ _11; y_13 = &MEM[(void *)y_5 + 32B]; _14 = MEM[(long unsigned int *)y_5 + 24B]; w_15 = w_12 + _14; i_17 = i_16 + 1; <bb 4>: # y_5 = PHI <&c(2), y_13(3)> which results in <bb 2>: w_4 = *x_2(D); _19 = MEM[(long unsigned int *)&c]; goto <bb 4>; <bb 3>: w_8 = _6 ^ w_7; _9 = MEM[(long unsigned int *)y_5 + 8B]; w_10 = w_8 + _9; _11 = MEM[(long unsigned int *)y_5 + 16B]; w_12 = w_10 ^ _11; y_13 = &MEM[(void *)y_5 + 32B]; _14 = MEM[(long unsigned int *)y_5 + 24B]; w_15 = w_12 + _14; i_17 = i_16 + 1; _20 = *y_13; <bb 4>: # y_5 = PHI <&c(2), y_13(3)> # _6 = PHI <_19(2), _20(3)> I see nothing wrong with that. Ah, but the load is conditional on i <= 7, so we effectively speculate it. Mine.