mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Do not try to emit debug info entry for dead global variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42046abd1f
commit
465c3bed16
@ -1097,6 +1097,10 @@ DIE *DwarfDebug::ConstructEnumTypeDIE(CompileUnit *DW_Unit, DIEnumerator *ETy) {
|
||||
/// CreateGlobalVariableDIE - Create new DIE using GV.
|
||||
DIE *DwarfDebug::CreateGlobalVariableDIE(CompileUnit *DW_Unit,
|
||||
const DIGlobalVariable &GV) {
|
||||
// If the global variable was optmized out then no need to create debug info entry.
|
||||
if (!GV.getGlobal())
|
||||
return NULL;
|
||||
|
||||
DIE *GVDie = new DIE(dwarf::DW_TAG_variable);
|
||||
AddString(GVDie, dwarf::DW_AT_name, dwarf::DW_FORM_string,
|
||||
GV.getDisplayName());
|
||||
@ -1518,7 +1522,8 @@ void DwarfDebug::ConstructFunctionDbgScope(DbgScope *RootScope,
|
||||
DIGlobalVariable GV(N);
|
||||
if (GV.getContext().getNode() == RootScope->getDesc().getNode()) {
|
||||
DIE *ScopedGVDie = CreateGlobalVariableDIE(ModuleCU, GV);
|
||||
SPDie->AddChild(ScopedGVDie);
|
||||
if (ScopedGVDie)
|
||||
SPDie->AddChild(ScopedGVDie);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
17
test/DebugInfo/2009-11-05-DeadGlobalVariable.ll
Normal file
17
test/DebugInfo/2009-11-05-DeadGlobalVariable.ll
Normal file
@ -0,0 +1,17 @@
|
||||
; RUN: llc %s -o /dev/null
|
||||
; Here variable bar is optimzied away. Do not trip over while trying to generate debug info.
|
||||
|
||||
define i32 @foo() nounwind readnone optsize ssp {
|
||||
entry:
|
||||
ret i32 42, !dbg !6
|
||||
}
|
||||
|
||||
!llvm.dbg.gv = !{!0}
|
||||
|
||||
!0 = metadata !{i32 458804, i32 0, metadata !1, metadata !"foo.bar", metadata !"foo.bar", metadata !"foo.bar", metadata !2, i32 3, metadata !5, i1 true, i1 true, null}; [DW_TAG_variable ]
|
||||
!1 = metadata !{i32 458798, i32 0, metadata !2, metadata !"foo", metadata !"foo", metadata !"foo", metadata !2, i32 2, metadata !3, i1 false, i1 true}; [DW_TAG_subprogram ]
|
||||
!2 = metadata !{i32 458769, i32 0, i32 12, metadata !"st.c", metadata !"/private/tmp", metadata !"clang 1.1", i1 true, i1 true, metadata !"", i32 0}; [DW_TAG_compile_unit ]
|
||||
!3 = metadata !{i32 458773, metadata !2, metadata !"", null, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0}; [DW_TAG_subroutine_type ]
|
||||
!4 = metadata !{metadata !5}
|
||||
!5 = metadata !{i32 458788, metadata !2, metadata !"int", metadata !2, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5}; [DW_TAG_base_type ]
|
||||
!6 = metadata !{i32 5, i32 1, metadata !1, null}
|
Loading…
Reference in New Issue
Block a user