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

Reply via email to