summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/2008-10-24-FlippedCompare.ll
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-10-24 13:03:10 +0000
committerDuncan Sands <baldrick@free.fr>2008-10-24 13:03:10 +0000
commit4047f4a0b478e20e981cc46d2aa0ca3141f79f07 (patch)
treeedd4aed964b539c2043d458ef8f44c9fb0f3a150 /test/CodeGen/X86/2008-10-24-FlippedCompare.ll
parent389b715e0f8fed761bd7a58d663ec33047a76c79 (diff)
downloadllvm-4047f4a0b478e20e981cc46d2aa0ca3141f79f07.tar.gz
llvm-4047f4a0b478e20e981cc46d2aa0ca3141f79f07.tar.bz2
llvm-4047f4a0b478e20e981cc46d2aa0ca3141f79f07.tar.xz
Fix translateX86CC: if SetCCOpcode is SETULE and
LHS is a foldable load, then LHS and RHS are swapped and SetCCOpcode is changed to SETUGT. But the later code is expecting operands to be the wrong way round for SETUGT, but they are not in this case, resulting in an inverted compare. The solution is to move the load normalization before the correction for SETUGT. This bug was tickled by LegalizeTypes which happened to legalize the testcase slightly differently to LegalizeDAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58092 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/2008-10-24-FlippedCompare.ll')
-rw-r--r--test/CodeGen/X86/2008-10-24-FlippedCompare.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/X86/2008-10-24-FlippedCompare.ll b/test/CodeGen/X86/2008-10-24-FlippedCompare.ll
new file mode 100644
index 0000000000..8a7987db59
--- /dev/null
+++ b/test/CodeGen/X86/2008-10-24-FlippedCompare.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc -enable-legalize-types -march=x86 -mattr=+sse2 -o - | not grep {ucomiss\[^,\]*esp}
+
+define void @f(float %wt) {
+entry:
+ %0 = fcmp ogt float %wt, 0.000000e+00 ; <i1> [#uses=1]
+ %1 = tail call i32 @g(i32 44) ; <i32> [#uses=3]
+ %2 = inttoptr i32 %1 to i8* ; <i8*> [#uses=2]
+ br i1 %0, label %bb, label %bb1
+
+bb: ; preds = %entry
+ ret void
+
+bb1: ; preds = %entry
+ ret void
+}
+
+declare i32 @g(i32)