diff options
author | Daniel Malea <daniel.malea@intel.com> | 2013-05-08 20:44:14 +0000 |
---|---|---|
committer | Daniel Malea <daniel.malea@intel.com> | 2013-05-08 20:44:14 +0000 |
commit | 13ace6664fad8b4d0277d16690674f4e1f176642 (patch) | |
tree | 07e183914fcea6659f8e2d4fa527d109a2e703cb /include | |
parent | d0fef32e5f3700c7de6dfc50a1a3815659b7d19e (diff) | |
download | llvm-13ace6664fad8b4d0277d16690674f4e1f176642.tar.gz llvm-13ace6664fad8b4d0277d16690674f4e1f176642.tar.bz2 llvm-13ace6664fad8b4d0277d16690674f4e1f176642.tar.xz |
Add DebugIR pass -- emits IR file and replace source lines with IR lines in MD
- requires existing debug information to be present
- fixes up file name and line number information in metadata
- emits a "<orig_filename>-debug.ll" succinct IR file (without !dbg metadata
or debug intrinsics) that can be read by a debugger
- initialize pass in opt tool to enable the "-debug-ir" flag
- lit tests to follow
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181467 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/DebugInfo.h | 3 | ||||
-rw-r--r-- | include/llvm/InitializePasses.h | 1 | ||||
-rw-r--r-- | include/llvm/Transforms/Instrumentation.h | 4 |
3 files changed, 8 insertions, 0 deletions
diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h index 1c7edc971b..5f92ca22ec 100644 --- a/include/llvm/DebugInfo.h +++ b/include/llvm/DebugInfo.h @@ -166,6 +166,9 @@ namespace llvm { public: explicit DIScope(const MDNode *N = 0) : DIDescriptor (N) {} + /// Set the filename by allocating a new string MDNode for + /// it and attaching it to the underlying node. + void setFilename(StringRef Name, LLVMContext &Context); StringRef getFilename() const; StringRef getDirectory() const; }; diff --git a/include/llvm/InitializePasses.h b/include/llvm/InitializePasses.h index 5b2cd603c3..072c2e4895 100644 --- a/include/llvm/InitializePasses.h +++ b/include/llvm/InitializePasses.h @@ -100,6 +100,7 @@ void initializeDAEPass(PassRegistry&); void initializeDAHPass(PassRegistry&); void initializeDCEPass(PassRegistry&); void initializeDSEPass(PassRegistry&); +void initializeDebugIRPass(PassRegistry&); void initializeDeadInstEliminationPass(PassRegistry&); void initializeDeadMachineInstructionElimPass(PassRegistry&); void initializeDependenceAnalysisPass(PassRegistry&); diff --git a/include/llvm/Transforms/Instrumentation.h b/include/llvm/Transforms/Instrumentation.h index 4aae200dd0..142b40f1ea 100644 --- a/include/llvm/Transforms/Instrumentation.h +++ b/include/llvm/Transforms/Instrumentation.h @@ -78,6 +78,10 @@ FunctionPass *createThreadSanitizerPass(StringRef BlacklistFile = StringRef()); // checking on loads, stores, and other memory intrinsics. FunctionPass *createBoundsCheckingPass(); +/// createDebugIRPass - Create and return a pass that modifies a module's +/// debug metadata to point back to IR instead of the original source file +ModulePass *createDebugIRPass(StringRef FilenamePostfix); + } // End llvm namespace #endif |