[LLVMbugs] [Bug 1872] New: SelectionDAG load / store CSE bug
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Tue Dec 18 11:16:21 PST 2007
http://llvm.org/bugs/show_bug.cgi?id=1872
Summary: SelectionDAG load / store CSE bug
Product: libraries
Version: trunk
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Common Code Generator Code
AssignedTo: unassignedbugs at nondot.org
ReportedBy: evan.cheng at apple.com
CC: llvmbugs at cs.uiuc.edu
See PR1799. Using SrcValue to compute node id's means we can end up with
multiple identical load / store nodes with the only difference being the
SrcValue.
Test case:
target triple = "i686-pc-linux-gnu"
%struct.c34007g__designated___XUB = type { i32, i32, i32, i32 }
%struct.c34007g__pkg__parent = type { i32*,
%struct.c34007g__designated___XUB* }
define void @_ada_c34007g() {
entry:
%x8 = alloca %struct.c34007g__pkg__parent, align 8 ;
<%struct.c34007g__pkg__parent*> [#uses=2]
%tmp1272 = getelementptr %struct.c34007g__pkg__parent* %x8, i32 0, i32
0 ; <i32**> [#uses=1]
%x82167 = bitcast %struct.c34007g__pkg__parent* %x8 to i64*
; <i64*> [#uses=1]
br i1 true, label %bb4668, label %bb848
bb4668: ; preds = %bb4648
%tmp5464 = load i64* %x82167, align 8 ; <i64> [#uses=1]
%tmp5467 = icmp ne i64 0, %tmp5464 ; <i1> [#uses=1]
%tmp5470 = load i32** %tmp1272, align 8 ; <i32*> [#uses=1]
%tmp5471 = icmp eq i32* %tmp5470, null ; <i1> [#uses=1]
%tmp5475 = or i1 %tmp5471, %tmp5467 ; <i1> [#uses=1]
%tmp5497 = or i1 %tmp5475, false ; <i1> [#uses=1]
br i1 %tmp5497, label %bb848, label %bb5507
bb848: ; preds = %entry
ret void
bb5507: ; preds = %bb4668
ret void
}
This compiles to:
.text
.align 4,0x90
.globl __ada_c34007g
__ada_c34007g:
subl $12, %esp
LBB1_1: # bb4668
movl 4(%esp), %eax
movl (%esp), %ecx
cmpl $0, (%esp)
je LBB1_3 # bb848
LBB1_2: # bb4668
orl %eax, %ecx
testl %ecx, %ecx
LBB1_3: # bb848
addl $12, %esp
ret
Note it issues two loads from (%esp) (the second one is folded into the cmpl).
--
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