mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-10 02:36:06 +00:00
Process InlinedAt location info.
Update InsertDeclare to return newly inserted llvm.dbg.declare intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
103f2434b8
commit
6daf99bf8f
@ -623,12 +623,12 @@ namespace llvm {
|
||||
void InsertRegionEnd(DIDescriptor D, BasicBlock *BB);
|
||||
|
||||
/// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
|
||||
void InsertDeclare(llvm::Value *Storage, DIVariable D,
|
||||
BasicBlock *InsertAtEnd);
|
||||
Instruction *InsertDeclare(llvm::Value *Storage, DIVariable D,
|
||||
BasicBlock *InsertAtEnd);
|
||||
|
||||
/// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
|
||||
void InsertDeclare(llvm::Value *Storage, DIVariable D,
|
||||
Instruction *InsertBefore);
|
||||
Instruction *InsertDeclare(llvm::Value *Storage, DIVariable D,
|
||||
Instruction *InsertBefore);
|
||||
|
||||
private:
|
||||
Constant *GetTagConstant(unsigned TAG);
|
||||
@ -731,6 +731,9 @@ bool getLocationInfo(const Value *V, std::string &DisplayName,
|
||||
/// processDeclare - Process DbgDeclareInst.
|
||||
void processDeclare(DbgDeclareInst *DDI);
|
||||
|
||||
/// processLocation - Process DILocation.
|
||||
void processLocation(DILocation Loc);
|
||||
|
||||
/// addCompileUnit - Add compile unit into CUs.
|
||||
bool addCompileUnit(DICompileUnit CU);
|
||||
|
||||
|
@ -1036,7 +1036,7 @@ void DIFactory::InsertRegionEnd(DIDescriptor D, BasicBlock *BB) {
|
||||
}
|
||||
|
||||
/// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
|
||||
void DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
Instruction *DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
Instruction *InsertBefore) {
|
||||
// Cast the storage to a {}* for the call to llvm.dbg.declare.
|
||||
Storage = new BitCastInst(Storage, EmptyStructPtr, "", InsertBefore);
|
||||
@ -1045,11 +1045,11 @@ void DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
DeclareFn = Intrinsic::getDeclaration(&M, Intrinsic::dbg_declare);
|
||||
|
||||
Value *Args[] = { Storage, D.getNode() };
|
||||
CallInst::Create(DeclareFn, Args, Args+2, "", InsertBefore);
|
||||
return CallInst::Create(DeclareFn, Args, Args+2, "", InsertBefore);
|
||||
}
|
||||
|
||||
/// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
|
||||
void DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
Instruction *DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
BasicBlock *InsertAtEnd) {
|
||||
// Cast the storage to a {}* for the call to llvm.dbg.declare.
|
||||
Storage = new BitCastInst(Storage, EmptyStructPtr, "", InsertAtEnd);
|
||||
@ -1058,7 +1058,7 @@ void DIFactory::InsertDeclare(Value *Storage, DIVariable D,
|
||||
DeclareFn = Intrinsic::getDeclaration(&M, Intrinsic::dbg_declare);
|
||||
|
||||
Value *Args[] = { Storage, D.getNode() };
|
||||
CallInst::Create(DeclareFn, Args, Args+2, "", InsertAtEnd);
|
||||
return CallInst::Create(DeclareFn, Args, Args+2, "", InsertAtEnd);
|
||||
}
|
||||
|
||||
|
||||
@ -1088,18 +1088,9 @@ void DebugInfoFinder::processModule(Module &M) {
|
||||
else if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(BI))
|
||||
processDeclare(DDI);
|
||||
#ifdef ATTACH_DEBUG_INFO_TO_AN_INSN
|
||||
else if (MDDbgKind) {
|
||||
if (MDNode *L = TheMetadata.getMD(MDDbgKind, BI)) {
|
||||
DILocation Loc(L);
|
||||
DIScope S(Loc.getScope().getNode());
|
||||
if (S.isCompileUnit())
|
||||
addCompileUnit(DICompileUnit(S.getNode()));
|
||||
else if (S.isSubprogram())
|
||||
processSubprogram(DISubprogram(S.getNode()));
|
||||
else if (S.isLexicalBlock())
|
||||
processLexicalBlock(DILexicalBlock(S.getNode()));
|
||||
}
|
||||
}
|
||||
else if (MDDbgKind)
|
||||
if (MDNode *L = TheMetadata.getMD(MDDbgKind, BI))
|
||||
processLocation(DILocation(L));
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1116,6 +1107,20 @@ void DebugInfoFinder::processModule(Module &M) {
|
||||
}
|
||||
}
|
||||
|
||||
/// processLocation - Process DILocation.
|
||||
void DebugInfoFinder::processLocation(DILocation Loc) {
|
||||
if (Loc.isNull()) return;
|
||||
DIScope S(Loc.getScope().getNode());
|
||||
if (S.isNull()) return;
|
||||
if (S.isCompileUnit())
|
||||
addCompileUnit(DICompileUnit(S.getNode()));
|
||||
else if (S.isSubprogram())
|
||||
processSubprogram(DISubprogram(S.getNode()));
|
||||
else if (S.isLexicalBlock())
|
||||
processLexicalBlock(DILexicalBlock(S.getNode()));
|
||||
processLocation(Loc.getOrigLocation());
|
||||
}
|
||||
|
||||
/// processType - Process DIType.
|
||||
void DebugInfoFinder::processType(DIType DT) {
|
||||
if (!addType(DT))
|
||||
|
Loading…
x
Reference in New Issue
Block a user