diff options
Diffstat (limited to 'include/llvm/Transforms/Instrumentation.h')
| -rw-r--r-- | include/llvm/Transforms/Instrumentation.h | 51 | 
1 files changed, 42 insertions, 9 deletions
diff --git a/include/llvm/Transforms/Instrumentation.h b/include/llvm/Transforms/Instrumentation.h index 8e63aaa4e873..4aae200dd083 100644 --- a/include/llvm/Transforms/Instrumentation.h +++ b/include/llvm/Transforms/Instrumentation.h @@ -14,6 +14,8 @@  #ifndef LLVM_TRANSFORMS_INSTRUMENTATION_H  #define LLVM_TRANSFORMS_INSTRUMENTATION_H +#include "llvm/ADT/StringRef.h" +  namespace llvm {  class ModulePass; @@ -29,21 +31,52 @@ ModulePass *createOptimalEdgeProfilerPass();  ModulePass *createPathProfilerPass();  // Insert GCOV profiling instrumentation -ModulePass *createGCOVProfilerPass(bool EmitNotes = true, bool EmitData = true, -                                   bool Use402Format = false, -                                   bool UseExtraChecksum = false); +struct GCOVOptions { +  static GCOVOptions getDefault(); + +  // Specify whether to emit .gcno files. +  bool EmitNotes; + +  // Specify whether to modify the program to emit .gcda files when run. +  bool EmitData; + +  // A four-byte version string. The meaning of a version string is described in +  // gcc's gcov-io.h +  char Version[4]; + +  // Emit a "cfg checksum" that follows the "line number checksum" of a +  // function. This affects both .gcno and .gcda files. +  bool UseCfgChecksum; + +  // Add the 'noredzone' attribute to added runtime library calls. +  bool NoRedZone; + +  // Emit the name of the function in the .gcda files. This is redundant, as +  // the function identifier can be used to find the name from the .gcno file. +  bool FunctionNamesInData; +}; +ModulePass *createGCOVProfilerPass(const GCOVOptions &Options = +                                   GCOVOptions::getDefault());  // Insert AddressSanitizer (address sanity checking) instrumentation -FunctionPass *createAddressSanitizerPass(); -// Insert ThreadSanitizer (race detection) instrumentation -FunctionPass *createThreadSanitizerPass(); +FunctionPass *createAddressSanitizerFunctionPass( +    bool CheckInitOrder = true, bool CheckUseAfterReturn = false, +    bool CheckLifetime = false, StringRef BlacklistFile = StringRef(), +    bool ZeroBaseShadow = false); +ModulePass *createAddressSanitizerModulePass( +    bool CheckInitOrder = true, StringRef BlacklistFile = StringRef(), +    bool ZeroBaseShadow = false); +// Insert MemorySanitizer instrumentation (detection of uninitialized reads) +FunctionPass *createMemorySanitizerPass(bool TrackOrigins = false, +                                        StringRef BlacklistFile = StringRef()); + +// Insert ThreadSanitizer (race detection) instrumentation +FunctionPass *createThreadSanitizerPass(StringRef BlacklistFile = StringRef());  // BoundsChecking - This pass instruments the code to perform run-time bounds  // checking on loads, stores, and other memory intrinsics. -// Penalty is the maximum run-time that is acceptable for the user. -// -FunctionPass *createBoundsCheckingPass(unsigned Penalty = 5); +FunctionPass *createBoundsCheckingPass();  } // End llvm namespace  | 
