1 //===- Transforms/Instrumentation/MemorySanitizer.h - TSan Pass -----------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines the thread sanitizer pass. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H 15 #define LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H 16 17 #include "llvm/IR/PassManager.h" 18 #include "llvm/Pass.h" 19 20 namespace llvm { 21 // Insert ThreadSanitizer (race detection) instrumentation 22 FunctionPass *createThreadSanitizerLegacyPassPass(); 23 24 /// A function pass for tsan instrumentation. 25 /// 26 /// Instruments functions to detect race conditions reads. This function pass 27 /// inserts calls to runtime library functions. If the functions aren't declared 28 /// yet, the pass inserts the declarations. Otherwise the existing globals are 29 struct ThreadSanitizerPass : public PassInfoMixin<ThreadSanitizerPass> { 30 PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM); 31 }; 32 } // namespace llvm 33 #endif /* LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H */ 34