search for: call_once_initialization

Displaying 3 results from an estimated 3 matches for "call_once_initialization".

2011 Nov 07
0
[LLVMdev] r139934 requires (correct?) code organization changes
...w option containing info for a pass; in this case the DominatorTree pass. The state of the system asserts because a DominatorTree pass option has already been created. This is perplexing since this means that the atomic compare and swap operation on static var "initialized" contained in CALL_ONCE_INITIALIZATION(...) did not prevent the pass's associated initialize""PassOnce(...) function from being invoked more than once. Logically, baring other knowledge, the only way this can happen is that CALL_ONCE_INITIALIZATION(...) is instantiated in at least two places. Although I forced the examp...
2016 Apr 16
2
[TSAN] LLVM statistics and pass initialization trigger race detection
...but not to read the return value, so the // return value is not thread safe. Can we tell TSAN to ignore the statistics somehow? Alternatively, is there a fix someone can suggest? 2) Pass initialization. This macro does not please TSAN (even though it seems written with TSAN in mind): #define CALL_ONCE_INITIALIZATION(function) \ static volatile sys::cas_flag initialized = 0; \ sys::cas_flag old_val = sys::CompareAndSwap(&initialized, 1, 0); \ if (old_val == 0) { \ function(Registry); \ sys::MemoryFence(); \ TsanIgnoreWritesBegin(); \ TsanHappensBefore(&initialized); \ initializ...
2015 Feb 24
2
[LLVMdev] Removing contention in PassRegistry accesses to speed up compiles
...vm/llvm.svnrev.170375/include/llvm/PassSupport.h index 3633f47..44b4d56 100644 --- a/llvm/llvm.svnrev.170375/include/llvm/PassSupport.h +++ b/llvm/llvm.svnrev.170375/include/llvm/PassSupport.h @@ -130,25 +130,14 @@ private: PassInfo(const PassInfo &) LLVM_DELETED_FUNCTION; }; + + #define CALL_ONCE_INITIALIZATION(function) \ - static volatile sys::cas_flag initialized = 0; \ - sys::cas_flag old_val = sys::CompareAndSwap(&initialized, 1, 0); \ - if (old_val == 0) { \ + static __thread int initialized = 0; \ + if (initialized == 0) { \ function(Registry); \ - sys::MemoryFence(); \ - TsanIg...