diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-11-12 02:07:50 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-11-12 02:07:50 +0000 |
commit | 75f69e3a3dff78cb89ded1d6c96ccb65603a82d9 (patch) | |
tree | c31f25e82a24efc4ece44807d80a866aa53c27ae /test/Transforms/ScalarRepl | |
parent | d1ac3a47f2c2993e8bbda0a9f1c843e9efd0f00f (diff) | |
download | llvm-75f69e3a3dff78cb89ded1d6c96ccb65603a82d9.tar.gz llvm-75f69e3a3dff78cb89ded1d6c96ccb65603a82d9.tar.bz2 llvm-75f69e3a3dff78cb89ded1d6c96ccb65603a82d9.tar.xz |
Make sure scalarrepl picks the correct alloca when it rewrites a bitcast. Fixes PR11353.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144442 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/ScalarRepl')
-rw-r--r-- | test/Transforms/ScalarRepl/2011-11-11-EmptyStruct.ll | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/Transforms/ScalarRepl/2011-11-11-EmptyStruct.ll b/test/Transforms/ScalarRepl/2011-11-11-EmptyStruct.ll new file mode 100644 index 0000000000..da707b706d --- /dev/null +++ b/test/Transforms/ScalarRepl/2011-11-11-EmptyStruct.ll @@ -0,0 +1,26 @@ +; RUN: opt < %s -S -scalarrepl | FileCheck %s + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" + +%struct.S = type { [2 x %struct.anon], double } +%struct.anon = type {} + +; CHECK: @test() +; CHECK-NOT: alloca +; CHECK: ret double 1.0 + +define double @test() nounwind uwtable ssp { +entry: + %retval = alloca %struct.S, align 8 + %ret = alloca %struct.S, align 8 + %b = getelementptr inbounds %struct.S* %ret, i32 0, i32 1 + store double 1.000000e+00, double* %b, align 8 + %0 = bitcast %struct.S* %retval to i8* + %1 = bitcast %struct.S* %ret to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) + %2 = bitcast %struct.S* %retval to double* + %3 = load double* %2, align 1 + ret double %3 +} + +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind |