mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
Only add DW_AT_prototyped if we're working with a C-like language.
Worth another 45k (1%) off of a large C++ testcase. rdar://10909458 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151144 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
438b092a4b
commit
8b6fe6b651
@ -780,8 +780,12 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
||||
Buffer.addChild(Arg);
|
||||
}
|
||||
}
|
||||
// Add prototype flag.
|
||||
if (isPrototyped)
|
||||
// Add prototype flag if we're dealing with a C language and the
|
||||
// function has been prototyped.
|
||||
if (isPrototyped &&
|
||||
(Language == dwarf::DW_LANG_C89 ||
|
||||
Language == dwarf::DW_LANG_C99 ||
|
||||
Language == dwarf::DW_LANG_ObjC))
|
||||
addUInt(&Buffer, dwarf::DW_AT_prototyped, dwarf::DW_FORM_flag, 1);
|
||||
}
|
||||
break;
|
||||
@ -1023,7 +1027,12 @@ DIE *CompileUnit::getOrCreateSubprogramDIE(DISubprogram SP) {
|
||||
|
||||
addSourceLine(SPDie, SP);
|
||||
|
||||
if (SP.isPrototyped())
|
||||
// Add the prototype if we have a prototype and we have a C like
|
||||
// language.
|
||||
if (SP.isPrototyped() &&
|
||||
(Language == dwarf::DW_LANG_C89 ||
|
||||
Language == dwarf::DW_LANG_C99 ||
|
||||
Language == dwarf::DW_LANG_ObjC))
|
||||
addUInt(SPDie, dwarf::DW_AT_prototyped, dwarf::DW_FORM_flag, 1);
|
||||
|
||||
// Add Return Type.
|
||||
|
@ -4,7 +4,7 @@
|
||||
; test that the DW_AT_specification is a back edge in the file.
|
||||
|
||||
; CHECK: 0x00000038: DW_TAG_subprogram [5] *
|
||||
; CHECK: 0x0000005f: DW_AT_specification [DW_FORM_ref4] (cu + 0x0038 => {0x00000038})
|
||||
; CHECK: 0x0000005e: DW_AT_specification [DW_FORM_ref4] (cu + 0x0038 => {0x00000038})
|
||||
|
||||
|
||||
@_ZZN3foo3barEvE1x = constant i32 0, align 4
|
||||
|
@ -7,7 +7,7 @@
|
||||
; first check that we have a TAG_subprogram at a given offset and it has
|
||||
; AT_inline.
|
||||
|
||||
; CHECK: 0x00000134: DW_TAG_subprogram
|
||||
; CHECK: 0x00000130: DW_TAG_subprogram [18]
|
||||
; CHECK-NEXT: DW_AT_MIPS_linkage_name
|
||||
; CHECK-NEXT: DW_AT_specification
|
||||
; CHECK-NEXT: DW_AT_inline
|
||||
@ -15,8 +15,8 @@
|
||||
|
||||
; and then that a TAG_subprogram refers to it with AT_abstract_origin.
|
||||
|
||||
; CHECK: 0x00000184: DW_TAG_subprogram
|
||||
; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0134 => {0x00000134})
|
||||
; CHECK: 0x00000180: DW_TAG_subprogram [20]
|
||||
; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0130 => {0x00000130})
|
||||
|
||||
define i32 @_ZN17nsAutoRefCnt7ReleaseEv() {
|
||||
entry:
|
||||
|
@ -3,8 +3,8 @@
|
||||
|
||||
; test that the DW_AT_specification is a back edge in the file.
|
||||
|
||||
; CHECK: 0x0000005b: DW_TAG_subprogram [5]
|
||||
; CHECK: 0x0000007c: DW_AT_specification [DW_FORM_ref4] (cu + 0x005b => {0x0000005b})
|
||||
; CHECK: 0x0000005a: DW_TAG_subprogram [5]
|
||||
; CHECK: 0x0000007a: DW_AT_specification [DW_FORM_ref4] (cu + 0x005a => {0x0000005a})
|
||||
|
||||
%struct.foo = type { i8 }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user