[llvm-commits] [llvm] r170240 - in /llvm/trunk: lib/Analysis/ValueTracking.cpp test/Transforms/InstCombine/2012-12-14-simp-vgep.ll

Nadav Rotem nrotem at apple.com
Fri Dec 14 12:43:49 PST 2012


Author: nadav
Date: Fri Dec 14 14:43:49 2012
New Revision: 170240

URL: http://llvm.org/viewvc/llvm-project?rev=170240&view=rev
Log:
Fix a crash in ValueTracking on vectors of pointers. 

Added:
    llvm/trunk/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll
Modified:
    llvm/trunk/lib/Analysis/ValueTracking.cpp

Modified: llvm/trunk/lib/Analysis/ValueTracking.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=170240&r1=170239&r2=170240&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ValueTracking.cpp (original)
+++ llvm/trunk/lib/Analysis/ValueTracking.cpp Fri Dec 14 14:43:49 2012
@@ -953,7 +953,7 @@
         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;

Added: llvm/trunk/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll?rev=170240&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll (added)
+++ llvm/trunk/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll Fri Dec 14 14:43:49 2012
@@ -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
+}





More information about the llvm-commits mailing list