summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/blocks.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2013-03-14 17:53:33 +0000
committerAdrian Prantl <aprantl@apple.com>2013-03-14 17:53:33 +0000
commit51936dd0bca042e37d71b148e313602e70482629 (patch)
tree3e3719af0464fc136152ef0db6d229c472c2bcca /clang/test/CodeGenCXX/blocks.cpp
parentc4b1ab442d5b509491cf57aa97c7527db13ab195 (diff)
downloadbcm5719-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.cpp6
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]])
OpenPOWER on IntegriCloud