[PATCH] D32180: [InstSimplify] Deduce correct type for vector gep
Davide Italiano via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 19 07:36:28 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL300693: [InstSimplify] Deduce correct type for vector GEP. (authored by davide).
Changed prior to commit:
https://reviews.llvm.org/D32180?vs=95601&id=95744#toc
Repository:
rL LLVM
https://reviews.llvm.org/D32180
Files:
llvm/trunk/lib/Analysis/InstructionSimplify.cpp
llvm/trunk/test/Transforms/InstSimplify/vector_gep.ll
Index: llvm/trunk/test/Transforms/InstSimplify/vector_gep.ll
===================================================================
--- llvm/trunk/test/Transforms/InstSimplify/vector_gep.ll
+++ llvm/trunk/test/Transforms/InstSimplify/vector_gep.ll
@@ -61,4 +61,28 @@
; CHECK-NEXT: ret <16 x i32*> getelementptr ([24 x [42 x [3 x i32]]], [24 x [42 x [3 x i32]]]* @v, <16 x i64> zeroinitializer, <16 x i64> zeroinitializer, <16 x i64> <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 11, i64 12, i64 13, i64 14, i64 15>, <16 x i64> zeroinitializer)
%VectorGep = getelementptr [24 x [42 x [3 x i32]]], [24 x [42 x [3 x i32]]]* @v, i64 0, i64 0, <16 x i64> <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 11, i64 12, i64 13, i64 14, i64 15>, i64 0
ret <16 x i32*> %VectorGep
-}
\ No newline at end of file
+}
+
+; PR32697
+; CHECK-LABEL: tinkywinky(
+; CHECK-NEXT: ret <4 x i8*> undef
+define <4 x i8*> @tinkywinky() {
+ %patatino = getelementptr i8, i8* undef, <4 x i64> undef
+ ret <4 x i8*> %patatino
+}
+
+; PR32697
+; CHECK-LABEL: dipsy(
+; CHECK-NEXT: ret <4 x i8*> undef
+define <4 x i8*> @dipsy() {
+ %patatino = getelementptr i8, <4 x i8 *> undef, <4 x i64> undef
+ ret <4 x i8*> %patatino
+}
+
+; PR32697
+; CHECK-LABEL: laalaa(
+; CHECK-NEXT: ret <4 x i8*> undef
+define <4 x i8*> @laalaa() {
+ %patatino = getelementptr i8, <4 x i8 *> undef, i64 undef
+ ret <4 x i8*> %patatino
+}
Index: llvm/trunk/lib/Analysis/InstructionSimplify.cpp
===================================================================
--- llvm/trunk/lib/Analysis/InstructionSimplify.cpp
+++ llvm/trunk/lib/Analysis/InstructionSimplify.cpp
@@ -3796,6 +3796,8 @@
Type *GEPTy = PointerType::get(LastType, AS);
if (VectorType *VT = dyn_cast<VectorType>(Ops[0]->getType()))
GEPTy = VectorType::get(GEPTy, VT->getNumElements());
+ else if (VectorType *VT = dyn_cast<VectorType>(Ops[1]->getType()))
+ GEPTy = VectorType::get(GEPTy, VT->getNumElements());
if (isa<UndefValue>(Ops[0]))
return UndefValue::get(GEPTy);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32180.95744.patch
Type: text/x-patch
Size: 2089 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170419/f5fd8b87/attachment.bin>
More information about the llvm-commits
mailing list