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;
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.
; 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
; 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
; 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:
; 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 }