mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
Debug Info: clean up usage of Verify.
No functionality change. It should suffice to check the type of a debug info metadata, instead of calling Verify. For cases where we know the type of a DI metadata, use assert. Also update testing cases to make them conform to the format of DI classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c084c0945b
commit
cbafae6d33
@ -1411,8 +1411,10 @@ static void printDebugLoc(DebugLoc DL, const MachineFunction *MF,
|
||||
const LLVMContext &Ctx = MF->getFunction()->getContext();
|
||||
if (!DL.isUnknown()) { // Print source line info.
|
||||
DIScope Scope(DL.getScope(Ctx));
|
||||
assert((!Scope || Scope.isScope()) &&
|
||||
"Scope of a DebugLoc should be null or a DIScope.");
|
||||
// Omit the directory, because it's likely to be long and uninteresting.
|
||||
if (Scope.Verify())
|
||||
if (Scope)
|
||||
CommentOS << Scope.getFilename();
|
||||
else
|
||||
CommentOS << "<unknown>";
|
||||
|
@ -600,7 +600,10 @@ bool FastISel::SelectCall(const User *I) {
|
||||
|
||||
case Intrinsic::dbg_declare: {
|
||||
const DbgDeclareInst *DI = cast<DbgDeclareInst>(Call);
|
||||
if (!DIVariable(DI->getVariable()).Verify() ||
|
||||
DIVariable DIVar(DI->getVariable());
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (!DIVar ||
|
||||
!FuncInfo.MF->getMMI().hasDebugInfo()) {
|
||||
DEBUG(dbgs() << "Dropping debug info for " << *DI << "\n");
|
||||
return true;
|
||||
|
@ -112,8 +112,11 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf) {
|
||||
// in a predictable order.
|
||||
if (const DbgDeclareInst *DI = dyn_cast<DbgDeclareInst>(I)) {
|
||||
MachineModuleInfo &MMI = MF->getMMI();
|
||||
DIVariable DIVar(DI->getVariable());
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (MMI.hasDebugInfo() &&
|
||||
DIVariable(DI->getVariable()).Verify() &&
|
||||
DIVar &&
|
||||
!DI->getDebugLoc().isUnknown()) {
|
||||
// Don't handle byval struct arguments or VLAs, for example.
|
||||
// Non-byval arguments are handled here (they refer to the stack
|
||||
|
@ -4537,7 +4537,10 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
const DbgDeclareInst &DI = cast<DbgDeclareInst>(I);
|
||||
MDNode *Variable = DI.getVariable();
|
||||
const Value *Address = DI.getAddress();
|
||||
if (!Address || !DIVariable(Variable).Verify()) {
|
||||
DIVariable DIVar(Variable);
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (!Address || !DIVar) {
|
||||
DEBUG(dbgs() << "Dropping debug info for " << DI << "\n");
|
||||
return 0;
|
||||
}
|
||||
@ -4612,7 +4615,10 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
}
|
||||
case Intrinsic::dbg_value: {
|
||||
const DbgValueInst &DI = cast<DbgValueInst>(I);
|
||||
if (!DIVariable(DI.getVariable()).Verify())
|
||||
DIVariable DIVar(DI.getVariable());
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgValueInst should be either null or a DIVariable.");
|
||||
if (!DIVar)
|
||||
return 0;
|
||||
|
||||
MDNode *Variable = DI.getVariable();
|
||||
|
@ -500,8 +500,10 @@ void SDNode::print_details(raw_ostream &OS, const SelectionDAG *G) const {
|
||||
DIScope
|
||||
Scope(dl.getScope(G->getMachineFunction().getFunction()->getContext()));
|
||||
OS << " dbg:";
|
||||
assert((!Scope || Scope.isScope()) &&
|
||||
"Scope of a DebugLoc should be null or a DIScope.");
|
||||
// Omit the directory, since it's usually long and uninteresting.
|
||||
if (Scope.Verify())
|
||||
if (Scope)
|
||||
OS << Scope.getFilename();
|
||||
else
|
||||
OS << "<unknown>";
|
||||
|
@ -279,8 +279,10 @@ void NVPTXAsmPrinter::emitLineNumberAsDotLoc(const MachineInstr &MI) {
|
||||
const LLVMContext &ctx = MF->getFunction()->getContext();
|
||||
DIScope Scope(curLoc.getScope(ctx));
|
||||
|
||||
if (!Scope.Verify())
|
||||
return;
|
||||
assert((!Scope || Scope.isScope()) &&
|
||||
"Scope of a DebugLoc should be null or a DIScope.");
|
||||
if (!Scope)
|
||||
return;
|
||||
|
||||
StringRef fileName(Scope.getFilename());
|
||||
StringRef dirName(Scope.getDirectory());
|
||||
|
@ -211,7 +211,9 @@ void DAE::CollectFunctionDIs(Module &M) {
|
||||
for (unsigned SPIndex = 0, SPNum = SPs.getNumElements();
|
||||
SPIndex < SPNum; ++SPIndex) {
|
||||
DISubprogram SP(SPs.getElement(SPIndex));
|
||||
if (!SP.Verify())
|
||||
assert((!SP || SP.isSubprogram()) &&
|
||||
"A MDNode in subprograms of a CU should be null or a DISubprogram.");
|
||||
if (!SP)
|
||||
continue;
|
||||
if (Function *F = SP.getFunction())
|
||||
FunctionDIs[F] = SP;
|
||||
|
@ -344,8 +344,11 @@ bool StripDeadDebugInfo::runOnModule(Module &M) {
|
||||
if (NamedMDNode *NMD = M.getNamedMetadata("llvm.dbg.gv")) {
|
||||
SmallVector<MDNode *, 8> MDs;
|
||||
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i)
|
||||
if (DIGlobalVariable(NMD->getOperand(i)).Verify())
|
||||
if (NMD->getOperand(i)) {
|
||||
assert(DIGlobalVariable(NMD->getOperand(i)).isGlobalVariable() &&
|
||||
"A MDNode in llvm.dbg.gv should be a DIGlobalVariable.");
|
||||
MDs.push_back(NMD->getOperand(i));
|
||||
}
|
||||
else
|
||||
Changed = true;
|
||||
NMD->eraseFromParent();
|
||||
@ -368,8 +371,11 @@ bool StripDeadDebugInfo::runOnModule(Module &M) {
|
||||
if (NamedMDNode *NMD = M.getNamedMetadata("llvm.dbg.sp")) {
|
||||
SmallVector<MDNode *, 8> MDs;
|
||||
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i)
|
||||
if (DISubprogram(NMD->getOperand(i)).Verify())
|
||||
if (NMD->getOperand(i)) {
|
||||
assert(DISubprogram(NMD->getOperand(i)).isSubprogram() &&
|
||||
"A MDNode in llvm.dbg.sp should be a DISubprogram.");
|
||||
MDs.push_back(NMD->getOperand(i));
|
||||
}
|
||||
else
|
||||
Changed = true;
|
||||
NMD->eraseFromParent();
|
||||
|
@ -434,7 +434,10 @@ void GCOVProfiler::emitProfileNotes() {
|
||||
DIArray SPs = CU.getSubprograms();
|
||||
for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i) {
|
||||
DISubprogram SP(SPs.getElement(i));
|
||||
if (!SP.Verify()) continue;
|
||||
assert((!SP || SP.isSubprogram()) &&
|
||||
"A MDNode in subprograms of a CU should be null or a DISubprogram.");
|
||||
if (!SP)
|
||||
continue;
|
||||
|
||||
Function *F = SP.getFunction();
|
||||
if (!F) continue;
|
||||
@ -483,7 +486,10 @@ bool GCOVProfiler::emitProfileArcs() {
|
||||
SmallVector<std::pair<GlobalVariable *, MDNode *>, 8> CountersBySP;
|
||||
for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i) {
|
||||
DISubprogram SP(SPs.getElement(i));
|
||||
if (!SP.Verify()) continue;
|
||||
assert((!SP || SP.isSubprogram()) &&
|
||||
"A MDNode in subprograms of a CU should be null or a DISubprogram.");
|
||||
if (!SP)
|
||||
continue;
|
||||
Function *F = SP.getFunction();
|
||||
if (!F) continue;
|
||||
if (!Result) Result = true;
|
||||
|
@ -854,7 +854,9 @@ static bool LdStHasDebugValue(DIVariable &DIVar, Instruction *I) {
|
||||
bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||
StoreInst *SI, DIBuilder &Builder) {
|
||||
DIVariable DIVar(DDI->getVariable());
|
||||
if (!DIVar.Verify())
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (!DIVar)
|
||||
return false;
|
||||
|
||||
if (LdStHasDebugValue(DIVar, SI))
|
||||
@ -888,7 +890,9 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||
bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||
LoadInst *LI, DIBuilder &Builder) {
|
||||
DIVariable DIVar(DDI->getVariable());
|
||||
if (!DIVar.Verify())
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (!DIVar)
|
||||
return false;
|
||||
|
||||
if (LdStHasDebugValue(DIVar, LI))
|
||||
@ -961,7 +965,9 @@ bool llvm::replaceDbgDeclareForAlloca(AllocaInst *AI, Value *NewAllocaAddress,
|
||||
if (!DDI)
|
||||
return false;
|
||||
DIVariable DIVar(DDI->getVariable());
|
||||
if (!DIVar.Verify())
|
||||
assert((!DIVar || DIVar.isVariable()) &&
|
||||
"Variable in DbgDeclareInst should be either null or a DIVariable.");
|
||||
if (!DIVar)
|
||||
return false;
|
||||
|
||||
// Create a copy of the original DIDescriptor for user variable, appending
|
||||
|
@ -76,8 +76,8 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
|
||||
!llvm.dbg.cu = !{!3}
|
||||
|
||||
!0 = metadata !{i32 786478, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", metadata !2, i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ]
|
||||
!1 = metadata !{i32 786451, metadata !2, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ]
|
||||
!0 = metadata !{i32 786478, metadata !48, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ]
|
||||
!1 = metadata !{i32 786451, metadata !48, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ]
|
||||
!2 = metadata !{i32 786473, metadata !48} ; [ DW_TAG_file_type ]
|
||||
!3 = metadata !{i32 786449, i32 4, metadata !2, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !47, metadata !47, metadata !46, metadata !47, metadata !47, metadata !""} ; [ DW_TAG_compile_unit ]
|
||||
!4 = metadata !{metadata !5, metadata !7, metadata !0, metadata !9}
|
||||
@ -85,14 +85,14 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
!6 = metadata !{i32 786447, metadata !2, metadata !"", metadata !2, i32 0, i64 64, i64 64, i64 0, i32 0, null} ; [ DW_TAG_pointer_type ]
|
||||
!7 = metadata !{i32 786445, metadata !1, metadata !"Kind", metadata !2, i32 8, i64 32, i64 32, i64 64, i32 0, metadata !8} ; [ DW_TAG_member ]
|
||||
!8 = metadata !{i32 786468, metadata !2, metadata !"unsigned int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 7} ; [ DW_TAG_base_type ]
|
||||
!9 = metadata !{i32 786478, metadata !1, metadata !"~SVal", metadata !"~SVal", metadata !"", metadata !2, i32 12, metadata !10, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ]
|
||||
!9 = metadata !{i32 786478, metadata !48, metadata !1, metadata !"~SVal", metadata !"~SVal", metadata !"", i32 12, metadata !10, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ]
|
||||
!10 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !11, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!11 = metadata !{null, metadata !12, metadata !13}
|
||||
!12 = metadata !{i32 786447, metadata !2, metadata !"", metadata !2, i32 0, i64 64, i64 64, i64 0, i32 64, metadata !1} ; [ DW_TAG_pointer_type ]
|
||||
!13 = metadata !{i32 786468, metadata !2, metadata !"int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
|
||||
!14 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !15, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!15 = metadata !{null, metadata !12}
|
||||
!16 = metadata !{i32 786478, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"_ZN4SValC1Ev", metadata !2, i32 11, metadata !14, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, void (%struct.SVal*)* @_ZN4SValC1Ev} ; [ DW_TAG_subprogram ]
|
||||
!16 = metadata !{i32 786478, metadata !48, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"_ZN4SValC1Ev", i32 11, metadata !14, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, void (%struct.SVal*)* @_ZN4SValC1Ev} ; [ DW_TAG_subprogram ]
|
||||
!17 = metadata !{i32 786478, metadata !2, metadata !"foo", metadata !"foo", metadata !"_Z3fooi4SVal", metadata !2, i32 16, metadata !18, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, i32 (i32, %struct.SVal*)* @_Z3fooi4SVal} ; [ DW_TAG_subprogram ]
|
||||
!18 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !19, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!19 = metadata !{metadata !13, metadata !13, metadata !1}
|
||||
|
@ -10,4 +10,5 @@ define void @t(%0*, i32, i32, i32, i32) nounwind {
|
||||
|
||||
declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
|
||||
!0 = metadata !{i32 0} ;
|
||||
; !0 should conform to the format of DIVariable.
|
||||
!0 = metadata !{i32 786689, null, metadata !"a", null, i32 0, null, i32 0, i32 0} ;
|
||||
|
@ -77,8 +77,8 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
!llvm.dbg.cu = !{!3}
|
||||
!46 = metadata !{metadata !0, metadata !9, metadata !16, metadata !17, metadata !20}
|
||||
|
||||
!0 = metadata !{i32 786478, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", metadata !2, i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null, null, null, null, i32 11} ; [ DW_TAG_subprogram ]
|
||||
!1 = metadata !{i32 786451, metadata !2, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ]
|
||||
!0 = metadata !{i32 786478, metadata !47, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null, null, null, null, i32 11} ; [ DW_TAG_subprogram ]
|
||||
!1 = metadata !{i32 786451, metadata !47, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ]
|
||||
!2 = metadata !{i32 786473, metadata !"small.cc", metadata !"/Users/manav/R8248330", metadata !3} ; [ DW_TAG_file_type ]
|
||||
!3 = metadata !{i32 786449, i32 4, metadata !2, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, null, null, metadata !46, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
|
||||
!4 = metadata !{metadata !5, metadata !7, metadata !0, metadata !9}
|
||||
@ -86,14 +86,14 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
!6 = metadata !{i32 786447, metadata !2, metadata !"", metadata !2, i32 0, i64 64, i64 64, i64 0, i32 0, null} ; [ DW_TAG_pointer_type ]
|
||||
!7 = metadata !{i32 786445, metadata !1, metadata !"Kind", metadata !2, i32 8, i64 32, i64 32, i64 64, i32 0, metadata !8} ; [ DW_TAG_member ]
|
||||
!8 = metadata !{i32 786468, metadata !2, metadata !"unsigned int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 7} ; [ DW_TAG_base_type ]
|
||||
!9 = metadata !{i32 786478, metadata !1, metadata !"~SVal", metadata !"~SVal", metadata !"", metadata !2, i32 12, metadata !10, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null, null, null, null, i32 12} ; [ DW_TAG_subprogram ]
|
||||
!9 = metadata !{i32 786478, metadata !47, metadata !1, metadata !"~SVal", metadata !"~SVal", metadata !"", i32 12, metadata !10, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null, null, null, null, i32 12} ; [ DW_TAG_subprogram ]
|
||||
!10 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !11, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!11 = metadata !{null, metadata !12, metadata !13}
|
||||
!12 = metadata !{i32 786447, metadata !2, metadata !"", metadata !2, i32 0, i64 64, i64 64, i64 0, i32 64, metadata !1} ; [ DW_TAG_pointer_type ]
|
||||
!13 = metadata !{i32 786468, metadata !2, metadata !"int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
|
||||
!14 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !15, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!15 = metadata !{null, metadata !12}
|
||||
!16 = metadata !{i32 786478, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"_ZN4SValC1Ev", metadata !2, i32 11, metadata !14, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, void (%struct.SVal*)* @_ZN4SValC1Ev, null, null, null, i32 11} ; [ DW_TAG_subprogram ]
|
||||
!16 = metadata !{i32 786478, metadata !47, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"_ZN4SValC1Ev", i32 11, metadata !14, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, void (%struct.SVal*)* @_ZN4SValC1Ev, null, null, null, i32 11} ; [ DW_TAG_subprogram ]
|
||||
!17 = metadata !{i32 786478, metadata !2, metadata !"foo", metadata !"foo", metadata !"_Z3fooi4SVal", metadata !2, i32 16, metadata !18, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, i32 (i32, %struct.SVal*)* @_Z3fooi4SVal, null, null, null, i32 16} ; [ DW_TAG_subprogram ]
|
||||
!18 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !19, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!19 = metadata !{metadata !13, metadata !13, metadata !1}
|
||||
@ -123,3 +123,4 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
!43 = metadata !{i32 26, i32 0, metadata !39, null}
|
||||
!44 = metadata !{i32 786688, metadata !39, metadata !"k", metadata !2, i32 26, metadata !13, i32 0, null} ; [ DW_TAG_auto_variable ]
|
||||
!45 = metadata !{i32 27, i32 0, metadata !39, null}
|
||||
!47 = metadata !{metadata !"small.cc", metadata !"/Users/manav/R8248330"}
|
||||
|
@ -50,8 +50,8 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
|
||||
!9 = metadata !{i32 786451, metadata !26, metadata !4, metadata !"S", i32 2, i64 8, i64 8, i64 0, i32 0, null, metadata !11, i32 0, null} ; [ DW_TAG_structure_type ]
|
||||
!10 = metadata !{i32 786473, metadata !26} ; [ DW_TAG_file_type ]
|
||||
!11 = metadata !{metadata !12}
|
||||
!12 = metadata !{i32 786478, metadata !10, metadata !9, metadata !"foo", metadata !"foo", metadata !"_ZN1S3fooEv", i32 3, metadata !13, i1 false, i1 true, i32 0, i32 0, null, i1 false, i32 (%struct.S*)* @_ZN1S3fooEv, null, null, null, i32 3} ; [ DW_TAG_subprogram ]
|
||||
!13 = metadata !{i32 786453, metadata !25, metadata !4, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !14, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!12 = metadata !{i32 786478, metadata !26, metadata !9, metadata !"foo", metadata !"foo", metadata !"_ZN1S3fooEv", i32 3, metadata !13, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, i32 (%struct.S*)* @_ZN1S3fooEv, null, null, null, i32 3} ; [ DW_TAG_subprogram ]
|
||||
!13 = metadata !{i32 786453, metadata !25, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !14, i32 0, null} ; [ DW_TAG_subroutine_type ]
|
||||
!14 = metadata !{metadata !8, metadata !15}
|
||||
!15 = metadata !{i32 786447, metadata !25, metadata !4, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 64, metadata !9} ; [ DW_TAG_pointer_type ]
|
||||
!16 = metadata !{i32 3, i32 0, metadata !1, null}
|
||||
|
@ -122,16 +122,16 @@ entry:
|
||||
!34 = metadata !{i32 720932, null, null, metadata !"char", i32 0, i64 8, i64 8, i64 0, i32 0, i32 6} ; [ DW_TAG_base_type ]
|
||||
!35 = metadata !{metadata !36}
|
||||
!36 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
|
||||
!37 = metadata !{i32 720942, metadata !6, null, metadata !"bar", metadata !"bar", metadata !"_ZN3barC1Ei", i32 13, metadata !22, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.bar*, i32)* @_ZN3barC1Ei, null, metadata !21, metadata !38} ; [ DW_TAG_subprogram ]
|
||||
!37 = metadata !{i32 720942, metadata !6, null, metadata !"bar", metadata !"bar", metadata !"_ZN3barC1Ei", i32 13, metadata !22, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.bar*, i32)* @_ZN3barC1Ei, null, metadata !21, metadata !38, i32 0} ; [ DW_TAG_subprogram ]
|
||||
!38 = metadata !{metadata !39}
|
||||
!39 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
|
||||
!40 = metadata !{i32 720942, metadata !6, null, metadata !"bar", metadata !"bar", metadata !"_ZN3barC2Ei", i32 13, metadata !22, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.bar*, i32)* @_ZN3barC2Ei, null, metadata !21, metadata !41} ; [ DW_TAG_subprogram ]
|
||||
!40 = metadata !{i32 720942, metadata !6, null, metadata !"bar", metadata !"bar", metadata !"_ZN3barC2Ei", i32 13, metadata !22, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.bar*, i32)* @_ZN3barC2Ei, null, metadata !21, metadata !41, i32 0} ; [ DW_TAG_subprogram ]
|
||||
!41 = metadata !{metadata !42}
|
||||
!42 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
|
||||
!43 = metadata !{i32 720942, metadata !6, null, metadata !"baz", metadata !"baz", metadata !"_ZN3bazC1Ei", i32 6, metadata !14, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.baz*, i32)* @_ZN3bazC1Ei, null, metadata !13, metadata !44} ; [ DW_TAG_subprogram ]
|
||||
!43 = metadata !{i32 720942, metadata !6, null, metadata !"baz", metadata !"baz", metadata !"_ZN3bazC1Ei", i32 6, metadata !14, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.baz*, i32)* @_ZN3bazC1Ei, null, metadata !13, metadata !44, i32 0} ; [ DW_TAG_subprogram ]
|
||||
!44 = metadata !{metadata !45}
|
||||
!45 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
|
||||
!46 = metadata !{i32 720942, metadata !6, null, metadata !"baz", metadata !"baz", metadata !"_ZN3bazC2Ei", i32 6, metadata !14, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.baz*, i32)* @_ZN3bazC2Ei, null, metadata !13, metadata !47} ; [ DW_TAG_subprogram ]
|
||||
!46 = metadata !{i32 720942, metadata !6, null, metadata !"baz", metadata !"baz", metadata !"_ZN3bazC2Ei", i32 6, metadata !14, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%struct.baz*, i32)* @_ZN3bazC2Ei, null, metadata !13, metadata !47, i32 0} ; [ DW_TAG_subprogram ]
|
||||
!47 = metadata !{metadata !48}
|
||||
!48 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
|
||||
!49 = metadata !{i32 721153, metadata !29, metadata !"argc", metadata !6, i32 16777232, metadata !12, i32 0, i32 0} ; [ DW_TAG_arg_variable ]
|
||||
|
@ -40,8 +40,8 @@ entry:
|
||||
!7 = metadata !{i32 786689, metadata !1, metadata !"__val", metadata !2, i32 33554510, metadata !8, i32 0, null} ; [ DW_TAG_arg_variable ]
|
||||
!8 = metadata !{i32 786468, metadata !3, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
|
||||
!9 = metadata !{i32 786689, metadata !1, metadata !"__len", metadata !2, i32 50331726, metadata !10, i32 0, null} ; [ DW_TAG_arg_variable ]
|
||||
!10 = metadata !{i32 589846, metadata !2, metadata !3, metadata !"size_t", i32 80, i64 0, i64 0, i64 0, i32 0, metadata !11} ; [ DW_TAG_typedef ]
|
||||
!11 = metadata !{i32 589846, metadata !2, metadata !3, metadata !"__darwin_size_t", i32 90, i64 0, i64 0, i64 0, i32 0, metadata !12} ; [ DW_TAG_typedef ]
|
||||
!10 = metadata !{i32 589846, metadata !27, metadata !3, metadata !"size_t", i32 80, i64 0, i64 0, i64 0, i32 0, metadata !11} ; [ DW_TAG_typedef ]
|
||||
!11 = metadata !{i32 589846, metadata !27, metadata !3, metadata !"__darwin_size_t", i32 90, i64 0, i64 0, i64 0, i32 0, metadata !12} ; [ DW_TAG_typedef ]
|
||||
!12 = metadata !{i32 786468, metadata !3, metadata !"long unsigned int", null, i32 0, i64 64, i64 64, i64 0, i32 0, i32 7} ; [ DW_TAG_base_type ]
|
||||
!16 = metadata !{i32 78, i32 28, metadata !1, null}
|
||||
!18 = metadata !{i32 78, i32 40, metadata !1, null}
|
||||
|
@ -389,8 +389,11 @@ struct BreakpointPrinter : public ModulePass {
|
||||
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
|
||||
std::string Name;
|
||||
DISubprogram SP(NMD->getOperand(i));
|
||||
if (SP.Verify())
|
||||
getContextName(SP.getContext(), Name);
|
||||
assert((!SP || SP.isSubprogram()) &&
|
||||
"A MDNode in llvm.dbg.sp should be null or a DISubprogram.");
|
||||
if (!SP)
|
||||
continue;
|
||||
getContextName(SP.getContext(), Name);
|
||||
Name = Name + SP.getDisplayName().str();
|
||||
if (!Name.empty() && Processed.insert(Name)) {
|
||||
Out << Name << "\n";
|
||||
|
Loading…
Reference in New Issue
Block a user