diff options
author | Devang Patel <dpatel@apple.com> | 2009-04-15 20:11:08 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-04-15 20:11:08 +0000 |
commit | 12e528beb5b91114ccdc12e7ff1b6e6597202321 (patch) | |
tree | 720cd0ed4cb624685c88e971307d318273daf336 | |
parent | 3209ac36502042636679ef030d609964891ccf57 (diff) | |
download | external_llvm-12e528beb5b91114ccdc12e7ff1b6e6597202321.zip external_llvm-12e528beb5b91114ccdc12e7ff1b6e6597202321.tar.gz external_llvm-12e528beb5b91114ccdc12e7ff1b6e6597202321.tar.bz2 |
Add DISubprogram is not null check.
This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69210 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/SelectionDAG/FastISel.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp index e9cc391..71092c1 100644 --- a/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -357,11 +357,13 @@ bool FastISel::SelectCall(User *I) { if (DW && DW->ValidDebugInfo(REI->getContext(), true)) { unsigned ID = 0; DISubprogram Subprogram(cast<GlobalVariable>(REI->getContext())); - if (!Subprogram.describes(MF.getFunction())) { + if (!Subprogram.isNull() && !Subprogram.describes(MF.getFunction())) { // This is end of an inlined function. const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL); ID = DW->RecordInlinedFnEnd(Subprogram); - BuildMI(MBB, DL, II).addImm(ID); + if (ID) + // If ID is 0 then this was not an end of inlined region. + BuildMI(MBB, DL, II).addImm(ID); } else { const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL); ID = DW->RecordRegionEnd(cast<GlobalVariable>(REI->getContext())); |