[LLVMbugs] [Bug 19796] New: Revision 208640 and later produces invalid indexed store for powerpc64-linux-gnu

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon May 19 14:04:19 PDT 2014


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

            Bug ID: 19796
           Summary: Revision 208640 and later produces invalid indexed
                    store for powerpc64-linux-gnu
           Product: libraries
           Version: trunk
          Hardware: Other
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
          Assignee: unassignedbugs at nondot.org
          Reporter: wschmidt at linux.vnet.ibm.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Starting with r208640, the following test produces invalid code for
powerpc64-linux-gnu:

target datalayout = "e-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"

%class.test = type { [64 x i8], [5 x i8] }

define void @f(%class.test* %this) {
entry:
  %Subminor.i.i = getelementptr inbounds %class.test* %this, i64 0, i32 1
  %0 = bitcast [5 x i8]* %Subminor.i.i to i40*
  %bf.load2.i.i = load i40* %0, align 4
  %bf.clear7.i.i = and i40 %bf.load2.i.i, -8589934592
  store i40 %bf.clear7.i.i, i40* %0, align 4
  ret void
}

The assembly code is:

        lbz 4, 68(3)
        li 5, 127
        sldi 5, 5, 33
        sldi 4, 4, 32
        and 4, 4, 5
        rldicl 5, 4, 32, 32
        stb 5, 68(3)
        stwx 4, 3, 64   <-- invalid!
        blr

The third operand to the stwx is a GPR number, and hence must be in the range
0..31.  Looks like an immediate offset is being placed where an index register
should be.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140519/aa48bc77/attachment.html>


More information about the llvm-bugs mailing list