aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorPaul Redmond <paul.redmond@intel.com>2013-02-12 15:21:21 +0000
committerPaul Redmond <paul.redmond@intel.com>2013-02-12 15:21:21 +0000
commit5c97450df748819381daa4c4d400c39b0d7378ae (patch)
tree248ac9d6c584c8abdf1caaab94aba84ca3d24715 /test
parent7eacad03efda36e09ebd96e95d7891cadaaa9087 (diff)
downloadexternal_llvm-5c97450df748819381daa4c4d400c39b0d7378ae.zip
external_llvm-5c97450df748819381daa4c4d400c39b0d7378ae.tar.gz
external_llvm-5c97450df748819381daa4c4d400c39b0d7378ae.tar.bz2
PR14562 - Truncation of left shift became undef
DAGCombiner::ReduceLoadWidth was converting (trunc i32 (shl i64 v, 32)) into (shl i32 v, 32) into undef. To prevent this, check the shift count against the final result size. Patch by: Kevin Schoedel Reviewed by: Nadav Rotem git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174972 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/X86/pr14562.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/CodeGen/X86/pr14562.ll b/test/CodeGen/X86/pr14562.ll
new file mode 100644
index 0000000..2df64b3
--- /dev/null
+++ b/test/CodeGen/X86/pr14562.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s -march=x86 | FileCheck %s
+
+@temp1 = global i64 -77129852189294865, align 8
+
+define void @foo() nounwind {
+ %x = load i64* @temp1, align 8
+ %s = shl i64 %x, 32
+ %t = trunc i64 %s to i32
+ %z = zext i32 %t to i64
+ store i64 %z, i64* @temp1, align 8
+; CHECK: movl $0, temp1+4
+; CHECK: movl $0, temp1
+ ret void
+}
+