[LLVMbugs] [Bug 1975] New: dag isel emitter isels wrong flag result

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Feb 2 19:33:19 PST 2008


           Summary: dag isel emitter isels wrong flag result
           Product: tools
           Version: 2.2
          Platform: PC
        OS/Version: All
            Status: NEW
          Keywords: compile-fail
          Severity: normal
          Priority: P2
         Component: TableGen
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sabre at nondot.org
                CC: evan.cheng at apple.com, llvmbugs at cs.uiuc.edu

The dag isel emitter is generating code that uses RAUW on a the flag result of
the wrong node in some cases.  For example, in the X86 r/m/w pattern for
"adde", the adde node generates a flag.  However, the selector code (generated
by tblgen) looks like this:

  ReplaceUses(SDOperand(N10.Val, 1), SDOperand(ResNode, 0));
  ReplaceUses(SDOperand(N.Val, 1), InFlag);  <---
  ReplaceUses(SDOperand(N.Val, 0), SDOperand(Chain10.Val, Chain10.ResNo));
  return ResNode;

That is replacing the "flag of the store" with the input flag.  This is
incorrect, as the store doesn't have a flag!  I'm committing a patch soon with
a horrible hack that works around this, but this really needs to be fixed.


Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list