From: Vitaly Buka Date: Sat, 24 Aug 2019 01:31:38 +0000 (+0000) Subject: NFC: Rename some sanitizer related lifetime checks X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0b814c709aa3ce4436b90060791b0fd0e3e5fed;p=clang NFC: Rename some sanitizer related lifetime checks git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369830 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/lifetime-asan.c b/test/CodeGen/lifetime-sanitizer.c similarity index 52% rename from test/CodeGen/lifetime-asan.c rename to test/CodeGen/lifetime-sanitizer.c index c5f25a2eaf..7979c2679a 100644 --- a/test/CodeGen/lifetime-asan.c +++ b/test/CodeGen/lifetime-sanitizer.c @@ -1,21 +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=CHECK-ASAN-USE-AFTER-SCOPE +// 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) { - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start.p0i8(i64 10, i8* {{.*}}) + // LIFETIME: @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* {{.*}}) + // LIFETIME: @llvm.lifetime.end.p0i8(i64 10, i8* {{.*}}) } else { - // CHECK-ASAN-USE-AFTER-SCOPE: @llvm.lifetime.start.p0i8(i64 20, i8* {{.*}}) + // LIFETIME: @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* {{.*}}) + // LIFETIME: @llvm.lifetime.end.p0i8(i64 20, i8* {{.*}}) } } diff --git a/test/CodeGenCXX/lifetime-asan.cpp b/test/CodeGenCXX/lifetime-asan.cpp deleted file mode 100644 index 9ccb28c876..0000000000 --- a/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/test/CodeGenCXX/lifetime-sanitizer.cpp b/test/CodeGenCXX/lifetime-sanitizer.cpp new file mode 100644 index 0000000000..8b6cb7dcc0 --- /dev/null +++ b/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(); +}