mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Revert "[asan] Add flag to allow lifetime analysis of problematic allocas"
This approach is not good enough. Working on the new solution. This reverts commit r281126. llvm-svn: 281688
This commit is contained in:
parent
e957209890
commit
eb58937d4a
@ -183,10 +183,6 @@ static cl::opt<bool> ClExperimentalPoisoning(
|
|||||||
"asan-experimental-poisoning",
|
"asan-experimental-poisoning",
|
||||||
cl::desc("Enable experimental red zones and scope poisoning"), cl::Hidden,
|
cl::desc("Enable experimental red zones and scope poisoning"), cl::Hidden,
|
||||||
cl::init(true));
|
cl::init(true));
|
||||||
static cl::opt<bool> ClSkipAmbiguousLifetimeAllocas(
|
|
||||||
"asan-skip-ambiguous-lifetime-allocas",
|
|
||||||
cl::desc("Disabled lifetime check for allocas with ambiguous lifetime"),
|
|
||||||
cl::Hidden, cl::init(true));
|
|
||||||
// This flag may need to be replaced with -f[no]asan-globals.
|
// This flag may need to be replaced with -f[no]asan-globals.
|
||||||
static cl::opt<bool> ClGlobals("asan-globals",
|
static cl::opt<bool> ClGlobals("asan-globals",
|
||||||
cl::desc("Handle global objects"), cl::Hidden,
|
cl::desc("Handle global objects"), cl::Hidden,
|
||||||
@ -894,8 +890,6 @@ public:
|
|||||||
// This is workaround for PR28267.
|
// This is workaround for PR28267.
|
||||||
void removeAllocasWithAmbiguousLifetime(
|
void removeAllocasWithAmbiguousLifetime(
|
||||||
SmallVectorImpl<FunctionStackPoisoner::AllocaPoisonCall> &PoisonCallVec) {
|
SmallVectorImpl<FunctionStackPoisoner::AllocaPoisonCall> &PoisonCallVec) {
|
||||||
if (!ClSkipAmbiguousLifetimeAllocas)
|
|
||||||
return;
|
|
||||||
DenseMap<const AllocaInst *, AllocaLifetimeChecker> Checkers;
|
DenseMap<const AllocaInst *, AllocaLifetimeChecker> Checkers;
|
||||||
for (const auto &APC : PoisonCallVec)
|
for (const auto &APC : PoisonCallVec)
|
||||||
Checkers[APC.AI].AddMarker(APC.InsBefore->getParent(), !APC.DoPoison);
|
Checkers[APC.AI].AddMarker(APC.InsBefore->getParent(), !APC.DoPoison);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
; Test handling of llvm.lifetime intrinsics.
|
; Test handling of llvm.lifetime intrinsics.
|
||||||
; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-DEFAULT
|
; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -S | FileCheck %s
|
||||||
; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-instrument-dynamic-allocas=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-NO-DYNAMIC
|
; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-instrument-dynamic-allocas=0 -S | FileCheck %s --check-prefix=CHECK-NO-DYNAMIC
|
||||||
; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-skip-ambiguous-lifetime-allocas=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-AMBIGUOUS
|
|
||||||
|
|
||||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-unknown-linux-gnu"
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
@ -70,14 +69,14 @@ define void @lifetime() sanitize_address {
|
|||||||
%arr.ptr = bitcast [10 x i32]* %arr to i8*
|
%arr.ptr = bitcast [10 x i32]* %arr to i8*
|
||||||
|
|
||||||
call void @llvm.lifetime.start(i64 40, i8* %arr.ptr)
|
call void @llvm.lifetime.start(i64 40, i8* %arr.ptr)
|
||||||
; CHECK-DEFAULT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
; CHECK: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
||||||
; CHECK-NO-DYNAMIC-NOT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
; CHECK-NO-DYNAMIC-NOT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
||||||
|
|
||||||
store volatile i8 0, i8* %arr.ptr
|
store volatile i8 0, i8* %arr.ptr
|
||||||
; CHECK: store volatile
|
; CHECK: store volatile
|
||||||
|
|
||||||
call void @llvm.lifetime.end(i64 40, i8* %arr.ptr)
|
call void @llvm.lifetime.end(i64 40, i8* %arr.ptr)
|
||||||
; CHECK-DEFAULT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
; CHECK: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
||||||
; CHECK-NO-DYNAMIC-NOT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
; CHECK-NO-DYNAMIC-NOT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
||||||
|
|
||||||
; One more lifetime start/end for the same variable %i.
|
; One more lifetime start/end for the same variable %i.
|
||||||
@ -117,8 +116,7 @@ bb0:
|
|||||||
; CHECK-LABEL: bb0:
|
; CHECK-LABEL: bb0:
|
||||||
|
|
||||||
call void @llvm.lifetime.start(i64 1, i8* %j)
|
call void @llvm.lifetime.start(i64 1, i8* %j)
|
||||||
; CHECK-DEFAULT-NOT: store i8 1, i8* %{{[0-9]+}}
|
; CHECK-NOT: store i8 1, i8* %{{[0-9]+}}
|
||||||
; CHECK-AMBIGUOUS: store i8 1, i8* %{{[0-9]+}}
|
|
||||||
; CHECK-NEXT: call void @llvm.lifetime.start
|
; CHECK-NEXT: call void @llvm.lifetime.start
|
||||||
|
|
||||||
br label %bb1
|
br label %bb1
|
||||||
@ -134,8 +132,7 @@ bb1:
|
|||||||
; CHECK-NEXT: call void @llvm.lifetime.end
|
; CHECK-NEXT: call void @llvm.lifetime.end
|
||||||
|
|
||||||
call void @llvm.lifetime.end(i64 1, i8* %j)
|
call void @llvm.lifetime.end(i64 1, i8* %j)
|
||||||
; CHECK-DEFAULT-NOT: store i8 -8, i8* %{{[0-9]+}}
|
; CHECK-NOT: store i8 -8, i8* %{{[0-9]+}}
|
||||||
; CHECK-AMBIGUOUS: store i8 -8, i8* %{{[0-9]+}}
|
|
||||||
; CHECK-NEXT: call void @llvm.lifetime.end
|
; CHECK-NEXT: call void @llvm.lifetime.end
|
||||||
|
|
||||||
ret void
|
ret void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user