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