[X86] Fix pattern match for 32-to-64-bit zext in the presence of AssertSext
[oota-llvm.git] / test / CodeGen / X86 / TruncAssertZext.ll
diff --git a/test/CodeGen/X86/TruncAssertZext.ll b/test/CodeGen/X86/TruncAssertZext.ll
new file mode 100644 (file)
index 0000000..2d78b5f
--- /dev/null
@@ -0,0 +1,16 @@
+; RUN: llc < %s -O2 -march=x86-64 | FileCheck %s\r
+; Checks that a zeroing mov is inserted for the trunc/zext pair even when\r
+; the source of the zext is an AssertSext node\r
+; PR20494\r
+\r
+define i64 @main(i64 %a) { \r
+; CHECK-LABEL: main\r
+; CHECK: movl %e{{..}}, %eax\r
+; CHECK: ret\r
+  %or = or i64 %a, -2\r
+  %trunc = trunc i64 %or to i32\r
+  br label %l\r
+l:\r
+  %ext = zext i32 %trunc to i64\r
+  ret i64 %ext\r
+}\r