[llvm-commits] [llvm] r150537 - in /llvm/trunk: lib/Target/X86/X86ISelDAGToDAG.cpp test/CodeGen/X86/dec-eflags-lower.ll

Pete Cooper peter_cooper at apple.com
Tue Feb 14 16:33:37 PST 2012


Author: pete
Date: Tue Feb 14 18:33:37 2012
New Revision: 150537

URL: http://llvm.org/viewvc/llvm-project?rev=150537&view=rev
Log:
Stop custom lowering forr x86 DEC64m from happening if the load in the lowered sequence has more than 1 user

Modified:
    llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
    llvm/trunk/test/CodeGen/X86/dec-eflags-lower.ll

Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=150537&r1=150536&r2=150537&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Tue Feb 14 18:33:37 2012
@@ -2379,6 +2379,7 @@
         StoredVal->getOpcode() != X86ISD::DEC ||
         StoredVal.getResNo() != 0 ||
         !StoredVal.getNode()->hasNUsesOfValue(1, 0) ||
+        !Chain.getNode()->hasNUsesOfValue(1, 0) ||
         StoredVal->getOperand(0).getNode() != Chain.getNode())
       break;
 

Modified: llvm/trunk/test/CodeGen/X86/dec-eflags-lower.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dec-eflags-lower.ll?rev=150537&r1=150536&r2=150537&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/dec-eflags-lower.ll (original)
+++ llvm/trunk/test/CodeGen/X86/dec-eflags-lower.ll Tue Feb 14 18:33:37 2012
@@ -43,6 +43,20 @@
 ret i32 0
 }
 
+; CHECK: test2
+define i32 @test2() nounwind uwtable ssp {
+entry:
+; CHECK-NOT: decq ({{.*}})
+%0 = load i64* @c, align 8, !tbaa !0
+%dec.i = add nsw i64 %0, -1
+store i64 %dec.i, i64* @c, align 8, !tbaa !0
+%tobool.i = icmp ne i64 %0, 0
+%lor.ext.i = zext i1 %tobool.i to i32
+store i32 %lor.ext.i, i32* @a, align 4, !tbaa !3
+%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([5 x i8]* @.str, i64 0, i64 0), i64 %dec.i) nounwind
+ret i32 0
+}
+
 declare i32 @printf(i8* nocapture, ...) nounwind
 
 declare void @free(i8* nocapture) nounwind





More information about the llvm-commits mailing list