summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-06-05 10:52:40 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-06-05 10:52:40 +0000
commitb58f32f7a84e98b51fd87ac9b49dba02b06fa7bc (patch)
treeb6b3e7cacdb97e21f8eb1aec699a3ea881131974 /llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll
parenteb33134ce791de41bc2fd2f11eb3d7732e009ce5 (diff)
downloadbcm5719-llvm-b58f32f7a84e98b51fd87ac9b49dba02b06fa7bc.tar.gz
bcm5719-llvm-b58f32f7a84e98b51fd87ac9b49dba02b06fa7bc.zip
[LoopVectorize] Don't crash on zero-sized types in isInductionPHI
isInductionPHI wants to calculate the stride based on the pointee size. However, this is not possible when the pointee is zero sized. This fixes PR23763. llvm-svn: 239143
Diffstat (limited to 'llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll')
-rw-r--r--llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll27
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll b/llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll
new file mode 100644
index 00000000000..8771dd26948
--- /dev/null
+++ b/llvm/test/Transforms/LoopVectorize/zero-sized-pointee-crash.ll
@@ -0,0 +1,27 @@
+; RUN: opt -S -loop-vectorize < %s | FileCheck %s
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+; CHECK-LABEL: @fn1
+define void @fn1() {
+entry-block:
+ br label %middle
+
+middle:
+ %0 = phi {}* [ %3, %middle ], [ inttoptr (i64 0 to {}*), %entry-block ]
+ %1 = bitcast {}* %0 to i8*
+ %2 = getelementptr i8, i8* %1, i64 1
+ %3 = bitcast i8* %2 to {}*
+ %4 = icmp eq i8* %2, undef
+ br i1 %4, label %exit, label %middle
+
+; CHECK: %[[phi:.*]] = phi {}* [ %3, %middle ], [ null, %entry-block ]
+; CHECK-NEXT: %[[bc1:.*]] = bitcast {}* %[[phi]] to i8*
+; CHECK-NEXT: %[[gep:.*]] = getelementptr i8, i8* %[[bc1]], i64 1
+; CHECK-NEXT: %[[bc2:.*]] = bitcast i8* %[[gep]] to {}*
+; CHECK-NEXT: %[[cmp:.*]] = icmp eq i8* %[[gep]], undef
+; CHECK-NEXT: br i1 %[[cmp]],
+
+exit:
+ ret void
+}
OpenPOWER on IntegriCloud