From c34b7aaefc29e7d3d27edc1a05ec146f5006150c Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Sat, 24 Aug 2019 01:31:38 +0000 Subject: NFC: Rename some sanitizer related lifetime checks llvm-svn: 369830 --- clang/test/CodeGen/lifetime-asan.c | 21 ------------ clang/test/CodeGen/lifetime-sanitizer.c | 21 ++++++++++++ clang/test/CodeGenCXX/lifetime-asan.cpp | 42 ----------------------- clang/test/CodeGenCXX/lifetime-sanitizer.cpp | 50 ++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 63 deletions(-) delete mode 100644 clang/test/CodeGen/lifetime-asan.c create mode 100644 clang/test/CodeGen/lifetime-sanitizer.c delete mode 100644 clang/test/CodeGenCXX/lifetime-asan.cpp create mode 100644 clang/test/CodeGenCXX/lifetime-sanitizer.cpp (limited to 'clang/test') diff --git a/clang/test/CodeGen/lifetime-asan.c b/clang/test/CodeGen/lifetime-asan.c deleted file mode 100644 index c5f25a2eaf7..00000000000 --- a/clang/test/CodeGen/lifetime-asan.c +++ /dev/null @@ -1,21 +0,0 @@ -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -O0 %s | FileCheck %s -check-prefix=CHECK-O0 -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -O0 \ -// RUN: -fsanitize=address -fsanitize-address-use-after-scope %s | \ -// RUN: FileCheck %s -check-prefix=CHECK-ASAN-USE-AFTER-SCOPE - -extern int bar(char *A, int n); - -// CHECK-O0-NOT: @llvm.lifetime.start -int foo(int n) { - if (n) { - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start.p0i8(i64 10, i8* {{.*}}) - char A[10]; - return bar(A, 1); - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.end.p0i8(i64 10, i8* {{.*}}) - } else { - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start.p0i8(i64 20, i8* {{.*}}) - char A[20]; - return bar(A, 2); - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.end.p0i8(i64 20, i8* {{.*}}) - } -} diff --git a/clang/test/CodeGen/lifetime-sanitizer.c b/clang/test/CodeGen/lifetime-sanitizer.c new file mode 100644 index 00000000000..7979c2679a9 --- /dev/null +++ b/clang/test/CodeGen/lifetime-sanitizer.c @@ -0,0 +1,21 @@ +// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -O0 %s | FileCheck %s -check-prefix=CHECK-O0 +// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -O0 \ +// RUN: -fsanitize=address -fsanitize-address-use-after-scope %s | \ +// RUN: FileCheck %s -check-prefix=LIFETIME + +extern int bar(char *A, int n); + +// CHECK-O0-NOT: @llvm.lifetime.start +int foo(int n) { + if (n) { + // LIFETIME: @llvm.lifetime.start.p0i8(i64 10, i8* {{.*}}) + char A[10]; + return bar(A, 1); + // LIFETIME: @llvm.lifetime.end.p0i8(i64 10, i8* {{.*}}) + } else { + // LIFETIME: @llvm.lifetime.start.p0i8(i64 20, i8* {{.*}}) + char A[20]; + return bar(A, 2); + // LIFETIME: @llvm.lifetime.end.p0i8(i64 20, i8* {{.*}}) + } +} diff --git a/clang/test/CodeGenCXX/lifetime-asan.cpp b/clang/test/CodeGenCXX/lifetime-asan.cpp deleted file mode 100644 index 9ccb28c876a..00000000000 --- a/clang/test/CodeGenCXX/lifetime-asan.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -fno-exceptions -O0 %s | FileCheck %s -check-prefixes=CHECK,CHECK-O0 --implicit-check-not=llvm.lifetime -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - -fno-exceptions -O0 \ -// RUN: -fsanitize=address -fsanitize-address-use-after-scope %s | \ -// RUN: FileCheck %s -check-prefixes=CHECK,CHECK-ASAN-USE-AFTER-SCOPE - -extern int bar(char *A, int n); - -struct X { X(); ~X(); int *p; }; -struct Y { Y(); int *p; }; - -extern "C" void a(), b(), c(), d(); - -// CHECK-LABEL: @_Z3foo -void foo(int n) { - // CHECK: call void @a() - a(); - - // CHECK: call void @b() - // CHECK-ASAN-USE-AFTER-SCOPE: store i1 false - // CHECK-ASAN-USE-AFTER-SCOPE: store i1 false - // CHECK: br i1 - // - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start - // CHECK-ASAN-USE-AFTER-SCOPE: store i1 true - // CHECK: call void @_ZN1XC - // CHECK: br label - // - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start - // CHECK-ASAN-USE-AFTER-SCOPE: store i1 true - // CHECK: call void @_ZN1YC - // CHECK: br label - // - // CHECK: call void @c() - // CHECK-ASAN-USE-AFTER-SCOPE: br i1 - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.end - // CHECK-ASAN-USE-AFTER-SCOPE: br i1 - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.end - b(), (n ? X().p : Y().p), c(); - - // CHECK: call void @d() - d(); -} diff --git a/clang/test/CodeGenCXX/lifetime-sanitizer.cpp b/clang/test/CodeGenCXX/lifetime-sanitizer.cpp new file mode 100644 index 00000000000..8b6cb7dcc05 --- /dev/null +++ b/clang/test/CodeGenCXX/lifetime-sanitizer.cpp @@ -0,0 +1,50 @@ +// RUN: %clang -w -target x86_64-linux-gnu -S -emit-llvm -o - -fno-exceptions -O0 %s | \ +// RUN: FileCheck %s -check-prefixes=CHECK,CHECK-O0 --implicit-check-not=llvm.lifetime +// RUN: %clang -w -target x86_64-linux-gnu -S -emit-llvm -o - -fno-exceptions -O0 \ +// RUN: -fsanitize=address -fsanitize-address-use-after-scope %s | \ +// RUN: FileCheck %s -check-prefixes=CHECK,LIFETIME + +extern int bar(char *A, int n); + +struct X { + X(); + ~X(); + int *p; +}; +struct Y { + Y(); + int *p; +}; + +extern "C" void a(), b(), c(), d(); + +// CHECK-LABEL: @_Z3foo +void foo(int n) { + // CHECK-LABEL: call void @a() + a(); + + // CHECK-LABEL: call void @b() + // CHECK: store i1 false + // CHECK-LABEL: br i1 + // + // CHECK-LABEL: cond.true: + // LIFETIME: @llvm.lifetime.start + // LIFETIME: store i1 true + // LIFETIME: call void @_ZN1XC + // CHECK-LABEL: br label + // + // CHECK-LABEL: cond.false: + // LIFETIME: @llvm.lifetime.start + // LIFETIME: store i1 true + // LIFETIME: call void @_ZN1YC + // CHECK-LABEL: br label + // + // CHECK-LABEL: cond.end: + // CHECK: call void @c() + // LIFETIME: @llvm.lifetime.end + // LIFETIME: @llvm.lifetime.end + b(), (n ? X().p : Y().p), c(); + + // CHECK: call void @d() + d(); +} -- cgit v1.2.3