diff options
author | Adrian Prantl <aprantl@apple.com> | 2013-03-14 17:53:33 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2013-03-14 17:53:33 +0000 |
commit | 51936dd0bca042e37d71b148e313602e70482629 (patch) | |
tree | 3e3719af0464fc136152ef0db6d229c472c2bcca /clang/test/CodeGenCXX/blocks.cpp | |
parent | c4b1ab442d5b509491cf57aa97c7527db13ab195 (diff) | |
download | bcm5719-llvm-51936dd0bca042e37d71b148e313602e70482629.tar.gz bcm5719-llvm-51936dd0bca042e37d71b148e313602e70482629.zip |
Allocate stack storage for .block_descriptor and captured self at -O0.
This way the register allocator will not optimize away the debug info
for captured variables.
Fixes rdar://problem/12767564
llvm-svn: 177086
Diffstat (limited to 'clang/test/CodeGenCXX/blocks.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/blocks.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/test/CodeGenCXX/blocks.cpp b/clang/test/CodeGenCXX/blocks.cpp index 1500c0d6983..209213999e7 100644 --- a/clang/test/CodeGenCXX/blocks.cpp +++ b/clang/test/CodeGenCXX/blocks.cpp @@ -120,8 +120,10 @@ namespace test4 { } // CHECK: define void @_ZN5test44testEv() // CHECK: define internal void @___ZN5test44testEv_block_invoke - // CHECK: [[TMP:%.*]] = alloca [[A:%.*]], align 1 - // CHECK-NEXT: bitcast i8* + // CHECK: [[TMP:%.*]] = alloca [[A:%.*]], align 1 + // CHECK-NEXT: store i8* [[BLOCKDESC:%.*]], i8** {{.*}}, align 8 + // CHECK-NEXT: load i8* + // CHECK-NEXT: bitcast i8* [[BLOCKDESC]] to <{ i8*, i32, i32, i8*, %struct.__block_descriptor* }>* // CHECK-NEXT: call void @_ZN5test41AC1Ev([[A]]* [[TMP]]) // CHECK-NEXT: call void @_ZN5test43fooENS_1AE([[A]]* [[TMP]]) // CHECK-NEXT: call void @_ZN5test41AD1Ev([[A]]* [[TMP]]) |