aboutsummaryrefslogtreecommitdiff
path: root/test/asan/TestCases/Darwin/nil-return-struct.mm
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-07-01 13:24:15 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-07-01 13:24:15 +0000
commit50aa32eff79f252ab05a0c0a589cf2ca37cd9923 (patch)
tree26de9fb78670a86ae63c21707b85c414cbf9d012 /test/asan/TestCases/Darwin/nil-return-struct.mm
parent10fcf738d732204a1f1e28878d68a27c5f12cf3b (diff)
downloadsrc-50aa32eff79f252ab05a0c0a589cf2ca37cd9923.tar.gz
src-50aa32eff79f252ab05a0c0a589cf2ca37cd9923.zip
Vendor import of compiler-rt trunk r306956:vendor/compiler-rt/compiler-rt-trunk-r306956
Notes
Notes: svn path=/vendor/compiler-rt/dist/; revision=320537 svn path=/vendor/compiler-rt/compiler-rt-trunk-r306956/; revision=320538; tag=vendor/compiler-rt/compiler-rt-trunk-r306956
Diffstat (limited to 'test/asan/TestCases/Darwin/nil-return-struct.mm')
-rw-r--r--test/asan/TestCases/Darwin/nil-return-struct.mm31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/asan/TestCases/Darwin/nil-return-struct.mm b/test/asan/TestCases/Darwin/nil-return-struct.mm
new file mode 100644
index 000000000000..9fb77e746339
--- /dev/null
+++ b/test/asan/TestCases/Darwin/nil-return-struct.mm
@@ -0,0 +1,31 @@
+// RUN: %clang_asan %s -o %t -framework Foundation
+// RUN: %run %t 2>&1 | FileCheck %s
+
+#import <Foundation/Foundation.h>
+
+struct MyStruct {
+ long a, b, c, d;
+};
+
+@interface MyClass: NSObject
+- (MyStruct)methodWhichReturnsARect;
+@end
+@implementation MyClass
+- (MyStruct)methodWhichReturnsARect {
+ MyStruct s;
+ s.a = 10;
+ s.b = 20;
+ s.c = 30;
+ s.d = 40;
+ return s;
+}
+@end
+
+int main() {
+ MyClass *myNil = nil; // intentionally nil
+ [myNil methodWhichReturnsARect];
+ fprintf(stderr, "Hello world");
+}
+
+// CHECK-NOT: AddressSanitizer: stack-use-after-scope
+// CHECK: Hello world