File indexing completed on 2026-05-10 08:44:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_TRANSFORMS_INSTRUMENTATION_MEMORYSANITIZER_H
0014 #define LLVM_TRANSFORMS_INSTRUMENTATION_MEMORYSANITIZER_H
0015
0016 #include "llvm/ADT/STLFunctionalExtras.h"
0017 #include "llvm/IR/PassManager.h"
0018
0019 namespace llvm {
0020 class Module;
0021 class StringRef;
0022 class raw_ostream;
0023
0024 struct MemorySanitizerOptions {
0025 MemorySanitizerOptions() : MemorySanitizerOptions(0, false, false, false){};
0026 MemorySanitizerOptions(int TrackOrigins, bool Recover, bool Kernel)
0027 : MemorySanitizerOptions(TrackOrigins, Recover, Kernel, false) {}
0028 MemorySanitizerOptions(int TrackOrigins, bool Recover, bool Kernel,
0029 bool EagerChecks);
0030 bool Kernel;
0031 int TrackOrigins;
0032 bool Recover;
0033 bool EagerChecks;
0034 };
0035
0036
0037
0038
0039
0040
0041
0042 struct MemorySanitizerPass : public PassInfoMixin<MemorySanitizerPass> {
0043 MemorySanitizerPass(MemorySanitizerOptions Options) : Options(Options) {}
0044
0045 PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
0046 void printPipeline(raw_ostream &OS,
0047 function_ref<StringRef(StringRef)> MapClassName2PassName);
0048 static bool isRequired() { return true; }
0049
0050 private:
0051 MemorySanitizerOptions Options;
0052 };
0053 }
0054
0055 #endif