diff options
author | Chris Lattner <sabre@nondot.org> | 2010-04-01 06:31:45 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-04-01 06:31:45 +0000 |
commit | e4bcde8db5a95fdbcc346dee9d61a1dece0e4f86 (patch) | |
tree | 765faea1287fbdbd7d7c983ac2ac6ff16878e490 | |
parent | e675d0f9242c4e34f80d7d5a51ef5c5ca30f2c60 (diff) | |
download | bcm5719-llvm-e4bcde8db5a95fdbcc346dee9d61a1dece0e4f86.tar.gz bcm5719-llvm-e4bcde8db5a95fdbcc346dee9d61a1dece0e4f86.zip |
switch IRBuilder to use NewDebugLoc for locations instead
of raw mdnodes. This allows frontends to specify debug
locations without ever creating an MDNode for the DILocation.
This requires a corresponding clang/llvm-gcc change which
I'll try to commit as simultaneously as possible.
llvm-svn: 100095
-rw-r--r-- | llvm/include/llvm/Support/IRBuilder.h | 15 | ||||
-rw-r--r-- | llvm/lib/VMCore/Core.cpp | 8 |
2 files changed, 13 insertions, 10 deletions
diff --git a/llvm/include/llvm/Support/IRBuilder.h b/llvm/include/llvm/Support/IRBuilder.h index 43b6e620f31..c352625aeb4 100644 --- a/llvm/include/llvm/Support/IRBuilder.h +++ b/llvm/include/llvm/Support/IRBuilder.h @@ -40,7 +40,7 @@ protected: /// IRBuilderBase - Common base class shared among various IRBuilders. class IRBuilderBase { - MDNode *CurDbgLocation; + NewDebugLoc CurDbgLocation; protected: BasicBlock *BB; BasicBlock::iterator InsertPt; @@ -48,7 +48,7 @@ protected: public: IRBuilderBase(LLVMContext &context) - : CurDbgLocation(0), Context(context) { + : Context(context) { ClearInsertionPoint(); } @@ -64,6 +64,7 @@ public: BasicBlock *GetInsertBlock() const { return BB; } BasicBlock::iterator GetInsertPoint() const { return InsertPt; } + LLVMContext &getContext() const { return Context; } /// SetInsertPoint - This specifies that created instructions should be /// appended to the end of the specified block. @@ -81,19 +82,19 @@ public: /// SetCurrentDebugLocation - Set location information used by debugging /// information. - void SetCurrentDebugLocation(MDNode *L) { + void SetCurrentDebugLocation(const NewDebugLoc &L) { CurDbgLocation = L; } /// getCurrentDebugLocation - Get location information used by debugging /// information. - MDNode *getCurrentDebugLocation() const { return CurDbgLocation; } + const NewDebugLoc &getCurrentDebugLocation() const { return CurDbgLocation; } /// SetInstDebugLocation - If this builder has a current debug location, set /// it on the specified instruction. void SetInstDebugLocation(Instruction *I) const { - if (CurDbgLocation) - I->setDbgMetadata(CurDbgLocation); + if (!CurDbgLocation.isUnknown()) + I->setDebugLoc(CurDbgLocation); } //===--------------------------------------------------------------------===// @@ -215,7 +216,7 @@ public: template<typename InstTy> InstTy *Insert(InstTy *I, const Twine &Name = "") const { this->InsertHelper(I, Name, BB, InsertPt); - if (getCurrentDebugLocation() != 0) + if (!getCurrentDebugLocation().isUnknown()) this->SetInstDebugLocation(I); return I; } diff --git a/llvm/lib/VMCore/Core.cpp b/llvm/lib/VMCore/Core.cpp index f4f65c54092..44d487a8e2b 100644 --- a/llvm/lib/VMCore/Core.cpp +++ b/llvm/lib/VMCore/Core.cpp @@ -1651,7 +1651,7 @@ LLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder) { } void LLVMClearInsertionPosition(LLVMBuilderRef Builder) { - unwrap(Builder)->ClearInsertionPoint (); + unwrap(Builder)->ClearInsertionPoint(); } void LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr) { @@ -1670,11 +1670,13 @@ void LLVMDisposeBuilder(LLVMBuilderRef Builder) { /*--.. Metadata builders ...................................................--*/ void LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L) { - unwrap(Builder)->SetCurrentDebugLocation(L? unwrap<MDNode>(L) : NULL); + MDNode *Loc = L ? unwrap<MDNode>(L) : NULL; + unwrap(Builder)->SetCurrentDebugLocation(NewDebugLoc::getFromDILocation(Loc)); } LLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder) { - return wrap(unwrap(Builder)->getCurrentDebugLocation()); + return wrap(unwrap(Builder)->getCurrentDebugLocation() + .getAsMDNode(unwrap(Builder)->getContext())); } void LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst) { |