diff options
author | Nadav Rotem <nrotem@apple.com> | 2012-12-14 20:43:49 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2012-12-14 20:43:49 +0000 |
commit | fd360c3e242e6317b241107a1db2b7d4a6276476 (patch) | |
tree | 07218a9afeb529fbf632bac77c5b30c143adf1b4 | |
parent | d3eb4f46f011f5880e09862559c17f03e38bef39 (diff) | |
download | llvm-fd360c3e242e6317b241107a1db2b7d4a6276476.tar.gz llvm-fd360c3e242e6317b241107a1db2b7d4a6276476.tar.bz2 llvm-fd360c3e242e6317b241107a1db2b7d4a6276476.tar.xz |
Fix a crash in ValueTracking on vectors of pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170240 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Analysis/ValueTracking.cpp | 2 | ||||
-rw-r--r-- | test/Transforms/InstCombine/2012-12-14-simp-vgep.ll | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/Analysis/ValueTracking.cpp b/lib/Analysis/ValueTracking.cpp index b86bc378fa..64e132e2e2 100644 --- a/lib/Analysis/ValueTracking.cpp +++ b/lib/Analysis/ValueTracking.cpp @@ -953,7 +953,7 @@ bool llvm::isKnownNonZero(Value *V, const DataLayout *TD, unsigned Depth) { return true; } - unsigned BitWidth = getBitWidth(V->getType(), TD); + unsigned BitWidth = getBitWidth(V->getType()->getScalarType(), TD); // X | Y != 0 if X != 0 or Y != 0. Value *X = 0, *Y = 0; diff --git a/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll b/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll new file mode 100644 index 0000000000..fc29b095e5 --- /dev/null +++ b/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll @@ -0,0 +1,10 @@ +; RUN: opt < %s -instcombine -S + +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" + +define <4 x i32> @foo(<4 x i32*>* %in) { + %t17 = load <4 x i32*>* %in, align 8 + %t18 = icmp eq <4 x i32*> %t17, zeroinitializer + %t19 = zext <4 x i1> %t18 to <4 x i32> + ret <4 x i32> %t19 +} |