[llvm-commits] [llvm] r82062 - /llvm/trunk/include/llvm/Support/IRBuilder.h
Devang Patel
dpatel at apple.com
Wed Sep 16 11:16:11 PDT 2009
Author: dpatel
Date: Wed Sep 16 13:16:11 2009
New Revision: 82062
URL: http://llvm.org/viewvc/llvm-project?rev=82062&view=rev
Log:
Add an interface to attach debugging information with an instruction.
Modified:
llvm/trunk/include/llvm/Support/IRBuilder.h
Modified: llvm/trunk/include/llvm/Support/IRBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/IRBuilder.h?rev=82062&r1=82061&r2=82062&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/IRBuilder.h (original)
+++ llvm/trunk/include/llvm/Support/IRBuilder.h Wed Sep 16 13:16:11 2009
@@ -20,6 +20,7 @@
#include "llvm/GlobalAlias.h"
#include "llvm/GlobalVariable.h"
#include "llvm/Function.h"
+#include "llvm/Metadata.h"
#include "llvm/LLVMContext.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ConstantFolder.h"
@@ -60,35 +61,38 @@
class IRBuilder : public Inserter {
BasicBlock *BB;
BasicBlock::iterator InsertPt;
+ MDKindID MDKind;
+ MDNode *CurLocation;
LLVMContext &Context;
T Folder;
public:
IRBuilder(LLVMContext &C, const T &F, const Inserter &I = Inserter())
- : Inserter(I), Context(C), Folder(F) {
+ : Inserter(I), MDKind(0), CurLocation(0), Context(C), Folder(F) {
ClearInsertionPoint();
}
- explicit IRBuilder(LLVMContext &C) : Context(C), Folder(C) {
+ explicit IRBuilder(LLVMContext &C)
+ : MDKind(0), CurLocation(0), Context(C), Folder(C) {
ClearInsertionPoint();
}
explicit IRBuilder(BasicBlock *TheBB, const T &F)
- : Context(TheBB->getContext()), Folder(F) {
+ : MDKind(0), CurLocation(0), Context(TheBB->getContext()), Folder(F) {
SetInsertPoint(TheBB);
}
explicit IRBuilder(BasicBlock *TheBB)
- : Context(TheBB->getContext()), Folder(Context) {
+ : MDKind(0), CurLocation(0), Context(TheBB->getContext()), Folder(Context) {
SetInsertPoint(TheBB);
}
IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F)
- : Context(TheBB->getContext()), Folder(F) {
+ : MDKind(0), CurLocation(0), Context(TheBB->getContext()), Folder(F) {
SetInsertPoint(TheBB, IP);
}
IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP)
- : Context(TheBB->getContext()), Folder(Context) {
+ : MDKind(0), CurLocation(0), Context(TheBB->getContext()), Folder(Context) {
SetInsertPoint(TheBB, IP);
}
@@ -127,10 +131,24 @@
InsertPt = IP;
}
+ /// SetCurrentLocation - This specifies the location information used
+ /// by debugging information.
+ void SetCurrentLocation(MDNode *L) {
+ if (MDKind == 0) {
+ Context.getMetadata().RegisterMDKind("dbg");
+ MDKind = Context.getMetadata().getMDKind("dbg");
+ }
+ CurLocation = L;
+ }
+
+ MDNode *getCurrentLocation() const { return CurLocation; }
+
/// Insert - Insert and return the specified instruction.
template<typename InstTy>
InstTy *Insert(InstTy *I, const Twine &Name = "") const {
this->InsertHelper(I, Name, BB, InsertPt);
+ if (CurLocation)
+ Context.getMetadata().setMD(MDKind, CurLocation, I);
return I;
}
More information about the llvm-commits
mailing list