[LLVMbugs] [Bug 9947] New: Instruction selection places memory operands on the wrong instructions

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed May 18 21:49:26 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=9947

           Summary: Instruction selection places memory operands on the
                    wrong instructions
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: zwarich at apple.com
                CC: llvmbugs at cs.uiuc.edu


It appears that for some patterns, isel puts the memory operands on the wrong
MachineInstructions. All of the remaining verifier failures in the "make check"
tests are due to this problem. Here is a simple example:

********************
FAIL: LLVM :: CodeGen/X86/break-sse-dep.ll (2322 of 6038)
******************** TEST 'LLVM :: CodeGen/X86/break-sse-dep.ll' FAILED
********************
Script:
--
/Volumes/Data/b/Release+Asserts/bin/llc <
/Volumes/Data/l/test/CodeGen/X86/break-sse-dep.ll -mtriple=x86_64-linux
-mattr=+sse2 | /Volumes/Data/b/Release+Asserts/bin/FileCheck
/Volumes/Data/l/test/CodeGen/X86/break-sse-dep.ll
/Volumes/Data/b/Release+Asserts/bin/llc <
/Volumes/Data/l/test/CodeGen/X86/break-sse-dep.ll -mtriple=x86_64-win32
-mattr=+sse2 | /Volumes/Data/b/Release+Asserts/bin/FileCheck
/Volumes/Data/l/test/CodeGen/X86/break-sse-dep.ll
--
Exit Code: 1
Command Output (stderr):
--

# Before register coalescing
# Machine code for function t1:
Function Live Ins: %RDI in %vreg0
Function Live Outs: %XMM0

0L    BB#0: derived from LLVM BB %entry
        Live Ins: %RDI
16L        %vreg0<def> = COPY %RDI<kill>; GR64:%vreg0
32L        %vreg1<def> = MOVSSrm %vreg0<kill>, 1, %noreg, 0, %noreg;
FR32:%vreg1 GR64:%vreg0
48L        %vreg2<def> = CVTSS2SDrr %vreg1<kill>; mem:LD4[%x] FR64:%vreg2
FR32:%vreg1
64L        %XMM0<def> = COPY %vreg2<kill>; FR64:%vreg2
80L        RET %XMM0<imp-use,kill>

# End machine code for function t1.

*** Bad machine code: Missing mayLoad flag ***
- function:    t1
- basic block: entry 0x7fc41b0337a0 (BB#0) [0L;96L)
- instruction: 48L    %vreg2<def> = CVTSS2SDrr %vreg1<kill>; mem:LD4[%x]
FR64:%vreg2 FR32:%vreg1
LLVM ERROR: Found 1 machine code errors.

-- 
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