Basically, we have before PRE: <bb 3>: # c_92 = PHI <c_88(19), c_6(23)>; <L1>:; # VUSE <SMT.18086_30>; D.571515_36 = fieldEngineBase_5->stride_m; D.571516_37 = m_104 * D.571515_36; D.571517_38 = c_92 + D.571516_37; # VUSE <SMT.18086_30>; D.571521_46 = fieldEngineBase_5->data_m.blockControllerPtr_m.ptr_m; # VUSE <SMT.18091_148>; D.571523_49 = D.571521_46->pBegin_m; # VUSE <SMT.18086_30>; D.571527_54 = fieldEngineBase_5->data_m.offset_m;
after PRE: NOTE: no flow-sensitive alias info for pretmp.18109_51 in pretmp.18111_48 = pretmp.18109_51->pBegin_m; <bb 23>: <L48>:; # VUSE <SMT.18086_30>; pretmp.18106_60 = fieldEngineBase_5->stride_m; pretmp.18108_52 = pretmp.18106_60 * m_104; # VUSE <SMT.18086_30>; pretmp.18109_51 = fieldEngineBase_5->data_m.blockControllerPtr_m.ptr_m; pretmp.18111_48 = pretmp.18109_51->pBegin_m; # VUSE <SMT.18086_30>; pretmp.18113_35 = fieldEngineBase_5->data_m.offset_m; note the missing # VUSE <SMT.18091_148>; on the dereference of pretmp.18109_51. verify_ssa only detects this later after loopinit which adds back the VUSE, but with a bare unrenamed SMT.18091. Oh, this may be the n-th dup of the same problem - just I didn't see PRE mentioned sofar. And no, I don't have a (small) testcase yet - this is in compiling tramp3d-v5 with custom patches. -- Summary: PRE looses SMT alias info Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27086