summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-11-26 07:14:50 +0000
committerTed Kremenek <kremenek@apple.com>2009-11-26 07:14:50 +0000
commit2350e0c3ba7f6c8cda1eaaa93c3427832e3ea82b (patch)
treeeca5f0f7890fd2759d1d1c809d157d1708c4acaa /clang/test/Analysis
parente5d8dd808eeb61acb8cd27b56670c45105a0827c (diff)
downloadbcm5719-llvm-2350e0c3ba7f6c8cda1eaaa93c3427832e3ea82b.tar.gz
bcm5719-llvm-2350e0c3ba7f6c8cda1eaaa93c3427832e3ea82b.zip
Improve diagnostics in ReturnStackAddressChecker for returning a stack-allocated block. Implements the rest of <rdar://problem/7387385>.
llvm-svn: 89940
Diffstat (limited to 'clang/test/Analysis')
-rw-r--r--clang/test/Analysis/stack-addr-ps.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/clang/test/Analysis/stack-addr-ps.c b/clang/test/Analysis/stack-addr-ps.c
index f26e2f0c635..5d1ce253fc3 100644
--- a/clang/test/Analysis/stack-addr-ps.c
+++ b/clang/test/Analysis/stack-addr-ps.c
@@ -1,5 +1,5 @@
-// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s
-// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s
+// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -fblocks -verify %s
+// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -fblocks -verify %s
int* f1() {
int x = 0;
@@ -55,3 +55,16 @@ int struct_test(struct baz byVal, int flag) {
return byVal.y[0]; // no-warning
}
}
+
+typedef int (^ComparatorBlock)(int a, int b);
+ComparatorBlock test_return_block(void) {
+ ComparatorBlock b = ^int(int a, int b){ return a > b; };
+ return b; // expected-warning{{Address of stack-allocated block declared on line 61 returned to caller}}
+}
+
+ComparatorBlock test_return_block_neg_aux(void);
+ComparatorBlock test_return_block_neg(void) {
+ ComparatorBlock b = test_return_block_neg_aux();
+ return b; // no-warning
+}
+
OpenPOWER on IntegriCloud