From fbf2a026224b80d9c1513060082195dc10a99d75 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Fri, 19 Jul 2013 10:57:32 +0000 Subject: Fix another assert failure very similar to PR16651's test case. This test case came from Benjamin and found the parallel bug in the vector promotion code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186666 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/SROA/basictest.ll | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'test/Transforms/SROA') diff --git a/test/Transforms/SROA/basictest.ll b/test/Transforms/SROA/basictest.ll index 9e5a26104d..458b0df3c8 100644 --- a/test/Transforms/SROA/basictest.ll +++ b/test/Transforms/SROA/basictest.ll @@ -1318,12 +1318,12 @@ define void @PR15805(i1 %a, i1 %b) { ret void } -define void @PR16651(i8* %a) { +define void @PR16651.1(i8* %a) { ; This test case caused a crash due to the volatile memcpy in combination with ; lowering to integer loads and stores of a width other than that of the original ; memcpy. ; -; CHECK-LABEL: @PR16651( +; CHECK-LABEL: @PR16651.1( ; CHECK: alloca i16 ; CHECK: alloca i8 ; CHECK: alloca i8 @@ -1337,3 +1337,23 @@ entry: load i8* %b.gep, align 2 unreachable } + +define void @PR16651.2() { +; This test case caused a crash due to failing to promote given a select that +; can't be speculated. It shouldn't be promoted, but we missed that fact when +; analyzing whether we could form a vector promotion because that code didn't +; bail on select instructions. +; +; CHECK-LABEL: @PR16651.2( +; CHECK: alloca <2 x float> +; CHECK: ret void + +entry: + %tv1 = alloca { <2 x float>, <2 x float> }, align 8 + %0 = getelementptr { <2 x float>, <2 x float> }* %tv1, i64 0, i32 1 + store <2 x float> undef, <2 x float>* %0, align 8 + %1 = getelementptr inbounds { <2 x float>, <2 x float> }* %tv1, i64 0, i32 1, i64 0 + %cond105.in.i.i = select i1 undef, float* null, float* %1 + %cond105.i.i = load float* %cond105.in.i.i, align 8 + ret void +} -- cgit v1.2.3