forked from OSchip/llvm-project
Use the target triple from the target machine rather than the module
to determine whether or not we're on a darwin platform for debug code emitting. Solves the problem of a module with no triple on the command line and no triple in the module using non-gdb ok features on darwin. Fix up the member-pointers test to check the correct things for cross platform (DW_FORM_flag is a good prefix). Unfortunately no testcase because I have no ideas how to test something without a triple and without a triple in the module yet check precisely on two platforms. Ideas welcome. llvm-svn: 180660
This commit is contained in:
parent
b2a602d730
commit
203e12bf9e
|
@ -135,6 +135,9 @@ namespace llvm {
|
||||||
/// getDataLayout - Return information about data layout.
|
/// getDataLayout - Return information about data layout.
|
||||||
const DataLayout &getDataLayout() const;
|
const DataLayout &getDataLayout() const;
|
||||||
|
|
||||||
|
/// getTargetTriple - Return the target triple string.
|
||||||
|
StringRef getTargetTriple() const;
|
||||||
|
|
||||||
/// getCurrentSection() - Return the current section we are emitting to.
|
/// getCurrentSection() - Return the current section we are emitting to.
|
||||||
const MCSection *getCurrentSection() const;
|
const MCSection *getCurrentSection() const;
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,10 @@ const DataLayout &AsmPrinter::getDataLayout() const {
|
||||||
return *TM.getDataLayout();
|
return *TM.getDataLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringRef AsmPrinter::getTargetTriple() const {
|
||||||
|
return TM.getTargetTriple();
|
||||||
|
}
|
||||||
|
|
||||||
/// getCurrentSection() - Return the current section we are emitting to.
|
/// getCurrentSection() - Return the current section we are emitting to.
|
||||||
const MCSection *AsmPrinter::getCurrentSection() const {
|
const MCSection *AsmPrinter::getCurrentSection() const {
|
||||||
return OutStreamer.getCurrentSection().first;
|
return OutStreamer.getCurrentSection().first;
|
||||||
|
|
|
@ -176,7 +176,7 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
||||||
|
|
||||||
// Turn on accelerator tables and older gdb compatibility
|
// Turn on accelerator tables and older gdb compatibility
|
||||||
// for Darwin.
|
// for Darwin.
|
||||||
bool IsDarwin = Triple(M->getTargetTriple()).isOSDarwin();
|
bool IsDarwin = Triple(A->getTargetTriple()).isOSDarwin();
|
||||||
if (DarwinGDBCompat == Default) {
|
if (DarwinGDBCompat == Default) {
|
||||||
if (IsDarwin)
|
if (IsDarwin)
|
||||||
IsDarwinGDBCompat = true;
|
IsDarwinGDBCompat = true;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
; CHECK: [[TYPE:.*]]: DW_TAG_subroutine_type
|
; CHECK: [[TYPE:.*]]: DW_TAG_subroutine_type
|
||||||
; CHECK: DW_TAG_formal_parameter
|
; CHECK: DW_TAG_formal_parameter
|
||||||
; CHECK-NEXT: DW_AT_type
|
; CHECK-NEXT: DW_AT_type
|
||||||
; CHECK-NEXT: DW_AT_artificial [DW_FORM_flag_present]
|
; CHECK-NEXT: DW_AT_artificial [DW_FORM_flag
|
||||||
; CHECK: DW_TAG_ptr_to_member_type
|
; CHECK: DW_TAG_ptr_to_member_type
|
||||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]})
|
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]})
|
||||||
; IR generated from clang -g with the following source:
|
; IR generated from clang -g with the following source:
|
||||||
|
|
Loading…
Reference in New Issue