Use DW_AT_linkage_name when we're emitting DWARF4 or above.
llvm-svn: 203867
This commit is contained in:
parent
2fb5bc33a3
commit
af7eca2da4
|
@ -1651,7 +1651,8 @@ void DwarfCompileUnit::createGlobalVariableDIE(DIGlobalVariable GV) {
|
||||||
// TAG_variable.
|
// TAG_variable.
|
||||||
addString(IsStaticMember && VariableSpecDIE ? VariableSpecDIE
|
addString(IsStaticMember && VariableSpecDIE ? VariableSpecDIE
|
||||||
: VariableDIE,
|
: VariableDIE,
|
||||||
dwarf::DW_AT_MIPS_linkage_name,
|
DD->getDwarfVersion() >= 4 ? dwarf::DW_AT_linkage_name
|
||||||
|
: dwarf::DW_AT_MIPS_linkage_name,
|
||||||
GlobalValue::getRealLinkageName(LinkageName));
|
GlobalValue::getRealLinkageName(LinkageName));
|
||||||
} else if (const ConstantInt *CI =
|
} else if (const ConstantInt *CI =
|
||||||
dyn_cast_or_null<ConstantInt>(GV.getConstant())) {
|
dyn_cast_or_null<ConstantInt>(GV.getConstant())) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; RUN: llc %s -o %t -filetype=obj -O0 -mtriple=x86_64-unknown-linux-gnu
|
; RUN: llc %s -o %t -filetype=obj -O0 -mtriple=x86_64-unknown-linux-gnu -dwarf-version=4
|
||||||
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=PRESENT
|
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=PRESENT
|
||||||
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=ABSENT
|
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=ABSENT
|
||||||
; RUN: llc %s -o %t -filetype=obj -O0 -mtriple=x86_64-apple-darwin
|
; RUN: llc %s -o %t -filetype=obj -O0 -mtriple=x86_64-apple-darwin -dwarf-version=4
|
||||||
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DARWINP
|
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DARWINP
|
||||||
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DARWINA
|
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DARWINA
|
||||||
; Verify that attributes we do want are PRESENT;
|
; Verify that attributes we do want are PRESENT;
|
||||||
|
@ -133,15 +133,15 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
|
||||||
; PRESENT: DW_TAG_variable
|
; PRESENT: DW_TAG_variable
|
||||||
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_A]]}
|
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_A]]}
|
||||||
; PRESENT-NEXT: DW_AT_location
|
; PRESENT-NEXT: DW_AT_location
|
||||||
; PRESENT-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1aE"
|
; PRESENT-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1aE"
|
||||||
; PRESENT: DW_TAG_variable
|
; PRESENT: DW_TAG_variable
|
||||||
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_B]]}
|
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_B]]}
|
||||||
; PRESENT-NEXT: DW_AT_location
|
; PRESENT-NEXT: DW_AT_location
|
||||||
; PRESENT-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1bE"
|
; PRESENT-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1bE"
|
||||||
; PRESENT: DW_TAG_variable
|
; PRESENT: DW_TAG_variable
|
||||||
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_C]]}
|
; PRESENT-NEXT: DW_AT_specification {{.*}} {0x[[DECL_C]]}
|
||||||
; PRESENT-NEXT: DW_AT_location
|
; PRESENT-NEXT: DW_AT_location
|
||||||
; PRESENT-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1cE"
|
; PRESENT-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1cE"
|
||||||
|
|
||||||
; For Darwin gdb:
|
; For Darwin gdb:
|
||||||
; DARWINP: .debug_info contents:
|
; DARWINP: .debug_info contents:
|
||||||
|
@ -183,19 +183,19 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
|
||||||
; DARWINP: DW_TAG_variable
|
; DARWINP: DW_TAG_variable
|
||||||
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_A]]}
|
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_A]]}
|
||||||
; DARWINP-NEXT: DW_AT_location
|
; DARWINP-NEXT: DW_AT_location
|
||||||
; DARWINP-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1aE"
|
; DARWINP-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1aE"
|
||||||
; DARWINP: DW_TAG_variable
|
; DARWINP: DW_TAG_variable
|
||||||
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_B]]}
|
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_B]]}
|
||||||
; DARWINP-NEXT: DW_AT_location
|
; DARWINP-NEXT: DW_AT_location
|
||||||
; DARWINP-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1bE"
|
; DARWINP-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1bE"
|
||||||
; DARWINP: DW_TAG_variable
|
; DARWINP: DW_TAG_variable
|
||||||
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_C]]}
|
; DARWINP-NEXT: DW_AT_specification {{.*}} {0x[[DECL_C]]}
|
||||||
; DARWINP-NEXT: DW_AT_location
|
; DARWINP-NEXT: DW_AT_location
|
||||||
; DARWINP-NEXT: DW_AT_MIPS_linkage_name {{.*}} "_ZN1C1cE"
|
; DARWINP-NEXT: DW_AT_linkage_name {{.*}} "_ZN1C1cE"
|
||||||
|
|
||||||
; ABSENT verifies that static member declarations do not have either
|
; ABSENT verifies that static member declarations do not have either
|
||||||
; DW_AT_location or DW_AT_data_member_location; also, variables do not
|
; DW_AT_location or DW_AT_data_member_location; also, variables do not
|
||||||
; have DW_AT_const_value and constants do not have DW_AT_MIPS_linkage_name.
|
; have DW_AT_const_value and constants do not have DW_AT_linkage_name.
|
||||||
;
|
;
|
||||||
; ABSENT: .debug_info contents:
|
; ABSENT: .debug_info contents:
|
||||||
; ABSENT: DW_TAG_member
|
; ABSENT: DW_TAG_member
|
||||||
|
@ -203,24 +203,24 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
|
||||||
; ABSENT-NOT: DW_AT_const_value
|
; ABSENT-NOT: DW_AT_const_value
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; ABSENT: DW_AT_name {{.*}} "const_a"
|
; ABSENT: DW_AT_name {{.*}} "const_a"
|
||||||
; ABSENT-NOT: DW_AT_MIPS_linkage_name
|
; ABSENT-NOT: DW_AT_linkage_name
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; ABSENT: DW_AT_name {{.*}} "b"
|
; ABSENT: DW_AT_name {{.*}} "b"
|
||||||
; ABSENT-NOT: DW_AT_const_value
|
; ABSENT-NOT: DW_AT_const_value
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; ABSENT: DW_AT_name {{.*}} "const_b"
|
; ABSENT: DW_AT_name {{.*}} "const_b"
|
||||||
; ABSENT-NOT: DW_AT_MIPS_linkage_name
|
; ABSENT-NOT: DW_AT_linkage_name
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; ABSENT: DW_AT_name {{.*}} "c"
|
; ABSENT: DW_AT_name {{.*}} "c"
|
||||||
; ABSENT-NOT: DW_AT_const_value
|
; ABSENT-NOT: DW_AT_const_value
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; ABSENT: DW_AT_name {{.*}} "const_c"
|
; ABSENT: DW_AT_name {{.*}} "const_c"
|
||||||
; ABSENT-NOT: DW_AT_MIPS_linkage_name
|
; ABSENT-NOT: DW_AT_linkage_name
|
||||||
; ABSENT-NOT: location
|
; ABSENT-NOT: location
|
||||||
; While we're here, a normal member does not have a linkage name, constant
|
; While we're here, a normal member does not have a linkage name, constant
|
||||||
; value, or DW_AT_location.
|
; value, or DW_AT_location.
|
||||||
; ABSENT: DW_AT_name {{.*}} "d"
|
; ABSENT: DW_AT_name {{.*}} "d"
|
||||||
; ABSENT-NOT: DW_AT_MIPS_linkage_name
|
; ABSENT-NOT: DW_AT_linkage_name
|
||||||
; ABSENT-NOT: DW_AT_const_value
|
; ABSENT-NOT: DW_AT_const_value
|
||||||
; ABSENT-NOT: DW_AT_location
|
; ABSENT-NOT: DW_AT_location
|
||||||
; ABSENT: NULL
|
; ABSENT: NULL
|
||||||
|
@ -232,24 +232,24 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
|
||||||
; DARWINA-NOT: DW_AT_const_value
|
; DARWINA-NOT: DW_AT_const_value
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; DARWINA: DW_AT_name {{.*}} "const_a"
|
; DARWINA: DW_AT_name {{.*}} "const_a"
|
||||||
; DARWINA-NOT: DW_AT_MIPS_linkage_name
|
; DARWINA-NOT: DW_AT_linkage_name
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; DARWINA: DW_AT_name {{.*}} "b"
|
; DARWINA: DW_AT_name {{.*}} "b"
|
||||||
; DARWINA-NOT: DW_AT_const_value
|
; DARWINA-NOT: DW_AT_const_value
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; DARWINA: DW_AT_name {{.*}} "const_b"
|
; DARWINA: DW_AT_name {{.*}} "const_b"
|
||||||
; DARWINA-NOT: DW_AT_MIPS_linkage_name
|
; DARWINA-NOT: DW_AT_linkage_name
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; DARWINA: DW_AT_name {{.*}} "c"
|
; DARWINA: DW_AT_name {{.*}} "c"
|
||||||
; DARWINA-NOT: DW_AT_const_value
|
; DARWINA-NOT: DW_AT_const_value
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; DARWINA: DW_AT_name {{.*}} "const_c"
|
; DARWINA: DW_AT_name {{.*}} "const_c"
|
||||||
; DARWINA-NOT: DW_AT_MIPS_linkage_name
|
; DARWINA-NOT: DW_AT_linkage_name
|
||||||
; DARWINA-NOT: location
|
; DARWINA-NOT: location
|
||||||
; While we're here, a normal member does not have a linkage name, constant
|
; While we're here, a normal member does not have a linkage name, constant
|
||||||
; value, or DW_AT_location.
|
; value, or DW_AT_location.
|
||||||
; DARWINA: DW_AT_name {{.*}} "d"
|
; DARWINA: DW_AT_name {{.*}} "d"
|
||||||
; DARWINA-NOT: DW_AT_MIPS_linkage_name
|
; DARWINA-NOT: DW_AT_linkage_name
|
||||||
; DARWINA-NOT: DW_AT_const_value
|
; DARWINA-NOT: DW_AT_const_value
|
||||||
; DARWINA-NOT: DW_AT_location
|
; DARWINA-NOT: DW_AT_location
|
||||||
; DARWINA: NULL
|
; DARWINA: NULL
|
||||||
|
|
Loading…
Reference in New Issue