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:
Eric Christopher 2012-02-22 08:46:21 +00:00
parent 438b092a4b
commit 8b6fe6b651
4 changed files with 18 additions and 9 deletions

View File

@ -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.

View File

@ -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

View File

@ -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:

View File

@ -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 }