From 13ace6664fad8b4d0277d16690674f4e1f176642 Mon Sep 17 00:00:00 2001 From: Daniel Malea Date: Wed, 8 May 2013 20:44:14 +0000 Subject: 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 "-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 --- include/llvm/DebugInfo.h | 3 +++ include/llvm/InitializePasses.h | 1 + include/llvm/Transforms/Instrumentation.h | 4 ++++ 3 files changed, 8 insertions(+) (limited to 'include') diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h index 1c7edc9..5f92ca2 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 5b2cd60..072c2e4 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 4aae200..142b40f 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 -- cgit v1.1