Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:44:39

0001 //===- ThreadSanitizer.h - ThreadSanitizer instrumentation ------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file defines the thread sanitizer pass.
0010 //
0011 //===----------------------------------------------------------------------===//
0012 
0013 #ifndef LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H
0014 #define LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H
0015 
0016 #include "llvm/IR/PassManager.h"
0017 
0018 namespace llvm {
0019 class Function;
0020 class Module;
0021 
0022 /// A function pass for tsan instrumentation.
0023 ///
0024 /// Instruments functions to detect race conditions reads. This function pass
0025 /// inserts calls to runtime library functions. If the functions aren't declared
0026 /// yet, the pass inserts the declarations. Otherwise the existing globals are
0027 struct ThreadSanitizerPass : public PassInfoMixin<ThreadSanitizerPass> {
0028   PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
0029   static bool isRequired() { return true; }
0030 };
0031 
0032 /// A module pass for tsan instrumentation.
0033 ///
0034 /// Create ctor and init functions.
0035 struct ModuleThreadSanitizerPass
0036   : public PassInfoMixin<ModuleThreadSanitizerPass> {
0037   PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
0038   static bool isRequired() { return true; }
0039 };
0040 
0041 } // namespace llvm
0042 #endif /* LLVM_TRANSFORMS_INSTRUMENTATION_THREADSANITIZER_H */