The testcase looks like this: int *nodekind; float *nodekindf; ...
for (i = 0; i < ARCHnodes; i++) { nodekind[i] = (int) nodekindf[i]; /* <<< */ if (nodekind[i] == 3) nodekind[i] = 1; } In the marked statement, the nodekind variable gets a new VDEF, which is wrong: D.2012_13 = (int) D.2011_12; # ARCHnodes_36 = VDEF <ARCHnodes_9> # nodekind_37 = VDEF <nodekind_44> # nodekindf_38 = VDEF <nodekindf_45> # SMT.8_39 = VDEF <SMT.8_46> *D.2008_7 = D.2012_13; -- Summary: [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bonzini at gnu dot org OtherBugsDependingO 33158 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33159