mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 14:10:41 +00:00
[tsan] Do not instrument accesses to the gcov counters array
There is a known intended race here. This is a follow-up to r264805, which disabled tsan instrumentation for updates to instrprof counters. For more background on this please see the discussion in D18164. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273202 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
832e25415d
commit
bdba755f85
@ -271,6 +271,10 @@ static bool shouldInstrumentReadWriteFromAddress(Value *Addr) {
|
||||
/*AddSegment=*/false)))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the global is in the GCOV counters array.
|
||||
if (GV->getName() == "__llvm_gcov_ctr")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
; This test checks that we are not instrumenting unwanted acesses to globals:
|
||||
; - Instruction profiler counter instrumentation has known intended races.
|
||||
; - The gcov counters array has a known intended race.
|
||||
;
|
||||
; RUN: opt < %s -tsan -S | FileCheck %s
|
||||
|
||||
@ -10,11 +11,18 @@ target triple = "x86_64-apple-macosx10.9"
|
||||
@__profc_test_bitcast = private global [2 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
@__profc_test_bitcast_foo = private global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
|
||||
@__llvm_gcov_ctr = internal global [1 x i64] zeroinitializer
|
||||
|
||||
define i32 @test_gep() sanitize_thread {
|
||||
entry:
|
||||
%pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_test_gep, i64 0, i64 0)
|
||||
%0 = add i64 %pgocount, 1
|
||||
store i64 %0, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_test_gep, i64 0, i64 0)
|
||||
|
||||
%gcovcount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__llvm_gcov_ctr, i64 0, i64 0)
|
||||
%1 = add i64 %gcovcount, 1
|
||||
store i64 %1, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__llvm_gcov_ctr, i64 0, i64 0)
|
||||
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user