diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-12-14 22:15:06 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-12-14 22:15:06 +0000 |
commit | 5348f94abd0e9d3945da8d059b55b156967e8ff9 (patch) | |
tree | 2ef529fcecfbcec96490c4939169aad38f74961d /test | |
parent | 750c85ea8efd0f899cdf7ba9060d1286ba14be9a (diff) |
Fix: <rdar://problem/7468209> SymbolManager::isLive() should not crash on captured block variables that are passed by reference
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91348 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Analysis/misc-ps-region-store.m | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m index d1906778e2..e736e0f37c 100644 --- a/test/Analysis/misc-ps-region-store.m +++ b/test/Analysis/misc-ps-region-store.m @@ -618,3 +618,21 @@ typedef void (^RDar_7462324_Callback)(id obj); } @end +//===----------------------------------------------------------------------===// +// <rdar://problem/7468209> - Scanning for live variables within a block should +// not crash on variables passed by reference via __block. +//===----------------------------------------------------------------------===// + +int rdar7468209_aux(); +void rdar7468209_aux2(); + +void rdar7468209() { + __block int x = 0; + ^{ + x = rdar7468209_aux(); + // We need a second statement so that 'x' would be removed from the store if it wasn't + // passed by reference. + rdar7468209_aux_2(); + }(); +} + |