[DWARF] Standardize checks and remove verbose where possible in DWARF tests
This patch removes the verbose option from tests that do not need it and simplifies the checks. For tests that do have the verbose option, the checks were standardized to be more readable and consistent. Reviewed By: shchenz, dblaikie Differential Revision: https://reviews.llvm.org/D112636
This commit is contained in:
parent
fa1dd5fdee
commit
1c2d3338eb
|
@ -1,20 +1,20 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -o - < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -o - < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
; Radar 7833483
|
||||
; Do not emit a separate out-of-line definition DIE for the function-local 'foo'
|
||||
; function (member of the function local 'A' type)
|
||||
; CHECK: DW_TAG_class_type
|
||||
; CHECK: DW_TAG_class_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "A"
|
||||
; CHECK-NEXT: DW_AT_name ("A")
|
||||
; Check that the subprogram inside the class definition has low_pc, only
|
||||
; attached to the definition.
|
||||
; CHECK: [[FOO_INL:0x........]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_low_pc
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "foo"
|
||||
; CHECK: DW_AT_name ("foo")
|
||||
; And just double check that there's no out of line definition that references
|
||||
; this subprogram.
|
||||
; CHECK-NOT: DW_AT_specification {{.*}} {[[FOO_INL]]}
|
||||
; CHECK-NOT: DW_AT_specification ([[FOO_INL]]
|
||||
|
||||
%class.A = type { i8 }
|
||||
%class.B = type { i8 }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; For some reason, the output when targetting sparc is not quite as expected.
|
||||
; XFAIL: sparc
|
||||
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; IR generated from clang -O0 with:
|
||||
; struct C {
|
||||
|
@ -13,23 +13,23 @@
|
|||
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "C"
|
||||
; CHECK: DW_AT_name ("C")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "~C"
|
||||
; CHECK: DW_AT_name ("~C")
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_linkage_name {{.*}} "_ZN1CD1Ev"
|
||||
; CHECK: DW_AT_linkage_name ("_ZN1CD1Ev")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "this"
|
||||
; CHECK: DW_AT_name ("this")
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "fun4"
|
||||
; CHECK: DW_AT_name ("fun4")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
; CHECK-NOT: DW_TAG
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_TAG_template_value_parameter
|
||||
; CHECK: DW_AT_name {{.*}} "V"
|
||||
; CHECK: DW_AT_name {{.*}}"V"
|
||||
; CHECK: DW_AT_const_value [DW_FORM_udata] (0)
|
||||
; CHECK: DW_TAG_template_value_parameter
|
||||
; CHECK: DW_AT_name {{.*}} "F"
|
||||
; CHECK: DW_AT_name {{.*}}"F"
|
||||
; CHECK: DW_AT_const_value [DW_FORM_udata] (0)
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
; CHECK: [[SP:.*]]: DW_TAG_structure_type
|
||||
; CHECK-NOT: TAG
|
||||
; CHECK: DW_AT_containing_type [DW_FORM_ref4]
|
||||
; CHECK: DW_AT_name {{.*}}= "vtable")
|
||||
; CHECK: DW_AT_name {{.*}}"vtable"
|
||||
|
||||
; The code doesn't actually matter.
|
||||
define i32 @main() #0 !dbg !4 {
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
; definition in b.cpp's CU.
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_AT_name {{.*}} "a.cpp"
|
||||
; CHECK: DW_AT_name {{.*}}"a.cpp"
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000[[INT:[a-f0-9]+]]
|
||||
; CHECK: 0x[[INLINED:[0-9a-f]*]]:{{.*}}DW_TAG_inlined_subroutine
|
||||
|
@ -31,7 +31,7 @@
|
|||
; Check the abstract definition is in the 'b.cpp' CU and doesn't contain any
|
||||
; concrete information (address range or variable location)
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_AT_name {{.*}} "b.cpp"
|
||||
; CHECK: DW_AT_name {{.*}}"b.cpp"
|
||||
; CHECK: 0x[[ABS_FUNC]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_AT_low_pc
|
||||
; CHECK: 0x[[ABS_VAR]]: DW_TAG_formal_parameter
|
||||
|
@ -40,7 +40,7 @@
|
|||
; CHECK-NOT: DW_AT_location
|
||||
|
||||
; CHECK: 0x[[INT]]: DW_TAG_base_type
|
||||
; CHECK: DW_AT_name {{.*}} "int"
|
||||
; CHECK: DW_AT_name {{.*}}"int"
|
||||
|
||||
; Check the concrete out of line definition references the abstract and
|
||||
; provides the address range and variable location
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; Testing that two distinct (distinct by writing them in separate files, while
|
||||
; still fulfilling C++'s ODR by having identical token sequences) functions,
|
||||
|
@ -27,13 +27,13 @@
|
|||
; The DISubprogram should show up in compile unit a.
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}}"b.cpp"
|
||||
; CHECK: DW_AT_name ("b.cpp")
|
||||
; CHECK-NOT: DW_TAG_subprogram
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}}"a.cpp"
|
||||
; CHECK: DW_AT_name {{.*}} "func"
|
||||
; CHECK: DW_AT_name ("a.cpp")
|
||||
; CHECK: DW_AT_name ("func")
|
||||
|
||||
source_filename = "test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; Built from source:
|
||||
; $ clang++ a.cpp b.cpp -g -c -emit-llvm
|
||||
|
@ -19,7 +19,7 @@
|
|||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "func"
|
||||
; CHECK: DW_AT_name ("func")
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK-NOT: DW_TAG_subprogram
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; Built from the following source with clang -O1
|
||||
; struct S { int i; };
|
||||
|
@ -13,11 +13,11 @@
|
|||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "function"
|
||||
; CHECK: DW_AT_name ("function")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "s"
|
||||
; CHECK: DW_AT_name ("s")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; FIXME: Even though 's' is never reconstituted into a struct, the one member
|
||||
; variable is still live and used, and so we should be able to describe 's's
|
||||
|
@ -28,7 +28,7 @@
|
|||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_location
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "i"
|
||||
; CHECK: DW_AT_name ("i")
|
||||
|
||||
|
||||
%struct.S = type { i32 }
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
; are emitted.
|
||||
|
||||
; CHECK: [[NODE:[0-9a-zA-Zx]+]]: DW_TAG_variable [4]
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "vla_expr"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"vla_expr"
|
||||
; CHECK: DW_AT_count [DW_FORM_ref4] (cu + {{.*}} => {[[NODE]]})
|
||||
|
||||
define void @foo(i32 %n) !dbg !7 {
|
||||
|
|
|
@ -7,15 +7,15 @@
|
|||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: 0x[[ENUM:.*]]: DW_TAG_enumeration_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "EA"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"EA"
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_MIPS_linkage_name {{.*}} "_Z4topA2EA"
|
||||
; CHECK: DW_AT_MIPS_linkage_name {{.*}}"_Z4topA2EA"
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[ENUM]]}
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_MIPS_linkage_name {{.*}} "_Z4topB2EA"
|
||||
; CHECK: DW_AT_MIPS_linkage_name {{.*}}"_Z4topB2EA"
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[ENUM]]
|
||||
|
||||
|
|
|
@ -12,24 +12,24 @@
|
|||
|
||||
; CHECK: debug_info contents
|
||||
; CHECK: DW_TAG_enumeration_type
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "e1"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"e1"
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_enumerator
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_enumerator
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "J"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"J"
|
||||
; CHECK-NEXT: DW_AT_const_value [DW_FORM_sdata] (4294967295)
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_enumerator
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "K"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"K"
|
||||
; CHECK-NEXT: DW_AT_const_value [DW_FORM_sdata] (-1152921504606846976)
|
||||
|
||||
; Check that we retain enums that aren't referenced by any variables, etc
|
||||
; CHECK: DW_TAG_enumeration_type
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "e2"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"e2"
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_enumerator
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "X"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"X"
|
||||
|
||||
source_filename = "test/DebugInfo/Generic/enum.ll"
|
||||
|
||||
|
|
|
@ -9,16 +9,16 @@
|
|||
; RUN: llvm-dwarfdump -v -debug-info %t.o | FileCheck %s
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-DAG: DW_AT_name {{.*}} "subroutine1"
|
||||
; CHECK-DAG: DW_AT_name {{.*}}"subroutine1"
|
||||
; CHECK-DAG: DW_AT_pure [DW_FORM_flag_present] (true)
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-DAG: DW_AT_name {{.*}} "subroutine2"
|
||||
; CHECK-DAG: DW_AT_name {{.*}}"subroutine2"
|
||||
; CHECK-DAG: DW_AT_elemental [DW_FORM_flag_present] (true)
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-DAG: DW_AT_name {{.*}} "subroutine3"
|
||||
; CHECK-DAG: DW_AT_name {{.*}}"subroutine3"
|
||||
; CHECK-DAG: DW_AT_recursive [DW_FORM_flag_present] (true)
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-DAG: DW_AT_name {{.*}} "subroutine4"
|
||||
; CHECK-DAG: DW_AT_name {{.*}}"subroutine4"
|
||||
; CHECK-DAG: DW_AT_pure [DW_FORM_flag_present] (true)
|
||||
; CHECK-DAG: DW_AT_elemental [DW_FORM_flag_present] (true)
|
||||
; CHECK-DAG: DW_AT_recursive [DW_FORM_flag_present] (true)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %S/gmlt_profiling.ll | llvm-dwarfdump -v - | FileCheck %S/gmlt_profiling.ll
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %S/gmlt_profiling.ll | llvm-dwarfdump - | FileCheck %S/gmlt_profiling.ll
|
||||
|
||||
; CHECK: .debug_info
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "f1"
|
||||
; CHECK: DW_AT_name ("f1")
|
||||
; With debug-info-for-profiling attribute, we need to emit decl_file and
|
||||
; decl_line of the subprogram.
|
||||
; CHECK-NEXT: DW_AT_decl_file
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck --implicit-check-not "{{DW_TAG|NULL}}" %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck --implicit-check-not "{{DW_TAG|NULL}}" %s
|
||||
|
||||
; Generated from the following source:
|
||||
; namespace ns {
|
||||
|
@ -17,14 +17,14 @@
|
|||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}} "f1"
|
||||
; CHECK: DW_AT_name ("f1")
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK: NULL
|
||||
; CHECK: DW_TAG_namespace
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: NULL
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}} "f2"
|
||||
; CHECK: DW_AT_name ("f2")
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK: NULL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O2 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O2 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; This is a test case that's as reduced as I can get it, though I haven't fully
|
||||
; understood the mechanisms by which this bug occurs, so perhaps there's further
|
||||
|
@ -35,16 +35,16 @@
|
|||
; }
|
||||
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "C"
|
||||
; CHECK-NEXT: DW_AT_name ("C")
|
||||
; CHECK: [[M_FN3_DECL:.*]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_AT_name {{.*}} "m_fn3"
|
||||
; CHECK: DW_AT_name ("m_fn3")
|
||||
|
||||
; CHECK: DW_AT_specification {{.*}} {[[M_FN3_DECL]]}
|
||||
; CHECK: DW_AT_specification ([[M_FN3_DECL]]
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "this"
|
||||
; CHECK: DW_AT_name ("this")
|
||||
|
||||
%struct.C = type { i32, %struct.B }
|
||||
%struct.B = type { i32 }
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=Abstract < %s | llvm-dwarfdump -v -debug-info - > %t
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=Abstract < %s | llvm-dwarfdump -debug-info - > %t
|
||||
; RUN: FileCheck %s -check-prefix=ONENAME < %t
|
||||
; RUN: FileCheck %s -check-prefix=REF < %t
|
||||
; Verify tuning for SCE gets us Abstract only.
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -debugger-tune=sce < %s | llvm-dwarfdump -v -debug-info - > %t
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -debugger-tune=sce < %s | llvm-dwarfdump -debug-info - > %t
|
||||
; RUN: FileCheck %s -check-prefix=ONENAME < %t
|
||||
; RUN: FileCheck %s -check-prefix=REF < %t
|
||||
|
||||
|
@ -31,9 +31,9 @@
|
|||
; Show that the only linkage names are for the inlined functions,
|
||||
; because those are the ones with an abstract origin.
|
||||
; ONENAME-NOT: {{DW_AT(_MIPS)?_linkage_name}}
|
||||
; ONENAME: {{DW_AT(_MIPS)?_linkage_name}} {{.*}} "_Z2f2v"
|
||||
; ONENAME: {{DW_AT(_MIPS)?_linkage_name}} ("_Z2f2v")
|
||||
; ONENAME-NOT: {{DW_AT(_MIPS)?_linkage_name}}
|
||||
; ONENAME: {{DW_AT(_MIPS)?_linkage_name}} {{.*}} "_ZN2F42f5Ev"
|
||||
; ONENAME: {{DW_AT(_MIPS)?_linkage_name}} ("_ZN2F42f5Ev")
|
||||
; ONENAME-NOT: {{DW_AT(_MIPS)?_linkage_name}}
|
||||
|
||||
; For f2() we see the definition pointing to an abstract origin DIE,
|
||||
|
@ -42,30 +42,30 @@
|
|||
; The order of these DIEs is not important of course, just the links.
|
||||
; REF: DW_TAG_subprogram
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: DW_AT_abstract_origin {{.*}} {[[F2:0x.*]]} "_Z2f2v"
|
||||
; REF: DW_AT_abstract_origin ([[F2:0x.*]] "_Z2f2v")
|
||||
; REF: [[F2]]: DW_TAG_subprogram
|
||||
; REF-NEXT: linkage_name {{.*}} "_Z2f2v"
|
||||
; REF-NEXT: linkage_name ("_Z2f2v")
|
||||
; REF: DW_TAG_inlined_subroutine
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: DW_AT_abstract_origin {{.*}} {[[F2]]}
|
||||
; REF: DW_AT_abstract_origin ([[F2]]
|
||||
|
||||
; For F4::f5(), first we see the in-class declaration,
|
||||
; then the definition, abstract origin, and the inlined_subroutine.
|
||||
; REF: DW_TAG_structure_type
|
||||
; REF-NEXT: DW_AT_name {{.*}} "F4"
|
||||
; REF-NEXT: DW_AT_name ("F4")
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: [[F5_DECL:0x.*]]: DW_TAG_subprogram
|
||||
; REF-NEXT: DW_AT_name {{.*}} "f5"
|
||||
; REF-NEXT: DW_AT_name ("f5")
|
||||
; REF: DW_TAG_subprogram
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: DW_AT_abstract_origin {{.*}} {[[F5_ABS:0x.*]]} "_ZN2F42f5Ev"
|
||||
; REF: DW_AT_abstract_origin ([[F5_ABS:0x.*]] "_ZN2F42f5Ev")
|
||||
; REF: [[F5_ABS]]: DW_TAG_subprogram
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: linkage_name {{.*}} "_ZN2F42f5Ev"
|
||||
; REF-NEXT: DW_AT_specification {{.*}} {[[F5_DECL]]}
|
||||
; REF: linkage_name ("_ZN2F42f5Ev")
|
||||
; REF-NEXT: DW_AT_specification ([[F5_DECL]]
|
||||
; REF: DW_TAG_inlined_subroutine
|
||||
; REF-NOT: {{DW_TAG|NULL}}
|
||||
; REF: DW_AT_abstract_origin {{.*}} {[[F5_ABS]]}
|
||||
; REF: DW_AT_abstract_origin ([[F5_ABS]]
|
||||
|
||||
|
||||
; Function Attrs: alwaysinline uwtable
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
; Make sure we're emitting DW_AT_main_subprogram.
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_AT_name {{.*}} "main"
|
||||
; CHECK: DW_AT_name {{.*}}"main"
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_AT_main_subprogram [DW_FORM_flag_present] (true)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; generated by clang from:
|
||||
; struct foo {
|
||||
|
@ -10,14 +10,14 @@
|
|||
; }
|
||||
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "foo"
|
||||
; CHECK-NEXT: DW_AT_name ("foo")
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_AT_name {{.*}} "f1"
|
||||
; CHECK: DW_AT_name ("f1")
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_AT_name {{.*}} "f2"
|
||||
; CHECK: DW_AT_name ("f2")
|
||||
|
||||
|
||||
%struct.foo = type { i8 }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; The formal parameter 'b' for Function 'x' when inlined within 'a' is lost on
|
||||
; powerpc64 (and on x86_64 at at least -O2). Presumably this is a SelectionDAG
|
||||
|
@ -38,25 +38,25 @@
|
|||
|
||||
; CHECK: [[X_DECL:.*]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "x"
|
||||
; CHECK: DW_AT_name ("x")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "b"
|
||||
; CHECK: DW_AT_name ("b")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_lexical_block
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_variable
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "s"
|
||||
; CHECK: DW_AT_name ("s")
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "b"
|
||||
; CHECK: DW_AT_name ("b")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[X_DECL]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[X_DECL]]
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
|
@ -71,13 +71,13 @@
|
|||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "a"
|
||||
; CHECK: DW_AT_name ("a")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[X_DECL]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[X_DECL]]
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; FIXME: This formal parameter goes missing at least at -O2 (& on
|
||||
; mips/powerpc), maybe before that. Perhaps SelectionDAG is to blame (and
|
||||
|
|
|
@ -1,67 +1,67 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -v - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump - | FileCheck %s
|
||||
; CHECK: debug_info contents
|
||||
; CHECK: DW_AT_name{{.*}}= [[F1:.*]])
|
||||
; CHECK: DW_AT_name {{.*}}[[F1:.*]])
|
||||
; CHECK: [[NS1:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace
|
||||
; CHECK-NOT: DW_AT_decl_file
|
||||
; CHECK-NOT: DW_AT_decl_line
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: [[NS2:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace
|
||||
; CHECK-NEXT: DW_AT_name{{.*}} = "B"
|
||||
; CHECK-NEXT: DW_AT_name ("B")
|
||||
; CHECK-NOT: DW_AT_decl_file
|
||||
; CHECK-NOT: DW_AT_decl_line
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: [[I:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}= "i"
|
||||
; CHECK-NEXT: DW_AT_name ("i")
|
||||
; CHECK: [[VAR_FWD:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}= "var_fwd"
|
||||
; CHECK-NEXT: DW_AT_name ("var_fwd")
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: [[FOO:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}= "foo"
|
||||
; CHECK-NEXT: DW_AT_name ("foo")
|
||||
; CHECK-NEXT: DW_AT_declaration
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: [[BAR:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}= "bar"
|
||||
; CHECK-NEXT: DW_AT_name ("bar")
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_MIPS_linkage_name
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "f1"
|
||||
; CHECK: DW_AT_name ("f1")
|
||||
; CHECK: [[FUNC1:.*]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_MIPS_linkage_name
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "f1"
|
||||
; CHECK: DW_AT_name ("f1")
|
||||
; CHECK: [[BAZ:0x[0-9a-f]*]]:{{.*}}DW_TAG_typedef
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "baz"
|
||||
; CHECK: DW_AT_name ("baz")
|
||||
; CHECK: [[VAR_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_variable
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "var_decl"
|
||||
; CHECK: DW_AT_name ("var_decl")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_declaration
|
||||
; CHECK: [[FUNC_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "func_decl"
|
||||
; CHECK: DW_AT_name ("func_decl")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_declaration
|
||||
; CHECK: [[FUNC_FWD:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "func_fwd"
|
||||
; CHECK: DW_AT_name ("func_fwd")
|
||||
; CHECK-NOT: DW_AT_declaration
|
||||
; CHECK: NULL
|
||||
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_module
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(15)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS2]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (15)
|
||||
; CHECK-NEXT: DW_AT_import ([[NS2]])
|
||||
; CHECK: NULL
|
||||
; CHECK-NOT: NULL
|
||||
|
||||
; CHECK: DW_TAG_imported_module
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(18)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (18)
|
||||
; CHECK-NEXT: DW_AT_import ([[NS1]])
|
||||
; CHECK-NOT: NULL
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
|
@ -70,73 +70,73 @@
|
|||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_MIPS_linkage_name
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name{{.*}}= "func"
|
||||
; CHECK: DW_AT_name ("func")
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_module
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(26)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2:.*]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (26)
|
||||
; CHECK-NEXT: DW_AT_import ([[NS1]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(27)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FOO]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (27)
|
||||
; CHECK-NEXT: DW_AT_import ([[FOO]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(28)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[BAR]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (28)
|
||||
; CHECK-NEXT: DW_AT_import ([[BAR]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(29)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC1]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (29)
|
||||
; CHECK-NEXT: DW_AT_import ([[FUNC1]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(30)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[I]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (30)
|
||||
; CHECK-NEXT: DW_AT_import ([[I]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(31)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[BAZ]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (31)
|
||||
; CHECK-NEXT: DW_AT_import ([[BAZ]])
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: [[X:0x[0-9a-f]*]]:{{ *}}DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(32)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}"X"
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (32)
|
||||
; CHECK-NEXT: DW_AT_import ([[NS1]])
|
||||
; CHECK-NEXT: DW_AT_name ("X")
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(33)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[X]]})
|
||||
; CHECK-NEXT: DW_AT_name{{.*}}"Y"
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (33)
|
||||
; CHECK-NEXT: DW_AT_import ([[X]])
|
||||
; CHECK-NEXT: DW_AT_name ("Y")
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(34)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[VAR_DECL]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (34)
|
||||
; CHECK-NEXT: DW_AT_import ([[VAR_DECL]])
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(35)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC_DECL]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (35)
|
||||
; CHECK-NEXT: DW_AT_import ([[FUNC_DECL]])
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(36)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[VAR_FWD]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (36)
|
||||
; CHECK-NEXT: DW_AT_import ([[VAR_FWD]])
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(37)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC_FWD]]})
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (37)
|
||||
; CHECK-NEXT: DW_AT_import ([[FUNC_FWD]])
|
||||
|
||||
; CHECK: DW_TAG_lexical_block
|
||||
; CHECK-NOT: NULL
|
||||
; CHECK: DW_TAG_imported_module
|
||||
; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line{{.*}}(23)
|
||||
; CHECK-NEXT: DW_AT_import{{.*}}=>
|
||||
; CHECK-NEXT: DW_AT_decl_file ([[F2]])
|
||||
; CHECK-NEXT: DW_AT_decl_line (23)
|
||||
; CHECK-NEXT: DW_AT_import {{.*}}
|
||||
; CHECK: NULL
|
||||
; CHECK: NULL
|
||||
; CHECK: NULL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; Generated from clang with the following source:
|
||||
; namespace ns {
|
||||
|
@ -7,12 +7,12 @@
|
|||
; }
|
||||
|
||||
; CHECK: DW_TAG_namespace
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "ns"
|
||||
; CHECK-NEXT: DW_AT_name ("ns")
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_low_pc
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_linkage_name {{.*}} "_ZN2ns4funcEv"
|
||||
; CHECK: DW_AT_linkage_name ("_ZN2ns4funcEv")
|
||||
; CHECK: NULL
|
||||
; CHECK: NULL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj -dwarf-linkage-names=All < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; Generate from clang with the following source. Note that the definition of
|
||||
; the inline function follows its use to workaround another bug that should be
|
||||
|
@ -11,11 +11,11 @@
|
|||
; int __attribute__((always_inline)) ns::func(int i) { return i * 2; }
|
||||
|
||||
; CHECK: DW_TAG_namespace
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "ns"
|
||||
; CHECK-NEXT: DW_AT_name ("ns")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_linkage_name {{.*}} "_ZN2ns4funcEi"
|
||||
; CHECK: DW_AT_linkage_name ("_ZN2ns4funcEi")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK: NULL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; This isn't a very pretty test case - I imagine there might be other ways to
|
||||
; tickle the optimizers into producing the desired code, but I haven't found
|
||||
|
@ -38,20 +38,20 @@
|
|||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: [[M_FN2_DECL:.*]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "m_fn2"
|
||||
; CHECK: DW_AT_name ("m_fn2")
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
|
||||
; The abstract definition of C::m_fn2
|
||||
; CHECK: [[M_FN2_ABS_DEF:.*]]: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_specification {{.*}} {[[M_FN2_DECL]]}
|
||||
; CHECK: DW_AT_specification {{.*}}[[M_FN2_DECL]]
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_inline
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: [[M_FN2_THIS_ABS_DEF:.*]]: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "this"
|
||||
; CHECK: DW_AT_name ("this")
|
||||
|
||||
; Skip some other functions
|
||||
; CHECK: DW_TAG_subprogram
|
||||
|
@ -61,11 +61,11 @@
|
|||
; The concrete definition of C::m_fn2
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[M_FN2_ABS_DEF]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[M_FN2_ABS_DEF]]
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[M_FN2_THIS_ABS_DEF]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[M_FN2_THIS_ABS_DEF]]
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; Inlined fn3:
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
|
@ -76,11 +76,11 @@
|
|||
; Inlined C::m_fn2:
|
||||
; CHECK: DW_TAG_inlined_subroutine
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[M_FN2_ABS_DEF]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[M_FN2_ABS_DEF]]
|
||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_abstract_origin {{.*}} {[[M_FN2_THIS_ABS_DEF]]}
|
||||
; CHECK: DW_AT_abstract_origin {{.*}}[[M_FN2_THIS_ABS_DEF]]
|
||||
|
||||
source_filename = "test/DebugInfo/Generic/recursive_inlining.ll"
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
; RUN: %llc_dwarf -dwarf-version=2 -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck --check-prefix=CHECK --check-prefix=V2 %s
|
||||
; RUN: %llc_dwarf -dwarf-version=3 -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck --check-prefix=CHECK --check-prefix=V3 %s
|
||||
; RUN: %llc_dwarf -dwarf-version=2 -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck --check-prefix=CHECK --check-prefix=V2 %s
|
||||
; RUN: %llc_dwarf -dwarf-version=3 -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck --check-prefix=CHECK --check-prefix=V3 %s
|
||||
|
||||
; CHECK: DW_AT_name {{.*}} "dst"
|
||||
; V2: DW_AT_type {{.*}} {[[PTR:0x.*]]}
|
||||
; V3: DW_AT_type {{.*}} {[[RESTRICT:0x.*]]}
|
||||
; V3: [[RESTRICT]]: {{.*}}DW_TAG_restrict_type
|
||||
; V3-NEXT: DW_AT_type {{.*}} {[[PTR:0x.*]]}
|
||||
; CHECK: [[PTR]]: {{.*}}DW_TAG_pointer_type
|
||||
; CHECK: DW_AT_name ("dst")
|
||||
; V2: DW_AT_type ([[PTR:0x........]]
|
||||
; V3: DW_AT_type ([[RESTRICT:0x........]]
|
||||
; V3: [[RESTRICT]]: DW_TAG_restrict_type
|
||||
; V3-NEXT: DW_AT_type ([[PTR:0x........]]
|
||||
; CHECK: [[PTR]]: DW_TAG_pointer_type
|
||||
; CHECK-NOT: DW_AT_type
|
||||
|
||||
; Generated with clang from:
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}} "f"
|
||||
; CHECK: DW_AT_name ("f")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_thrown_type
|
||||
; CHECK-NEXT: DW_AT_type {{.*}} {[[ERROR:.*]]}
|
||||
; CHECK-NEXT: DW_AT_type ([[ERROR:0x........]]
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_thrown_type
|
||||
; CHECK-NEXT: DW_AT_type {{.*}} {[[ERROR2:.*]]}
|
||||
; CHECK-NEXT: DW_AT_type ([[ERROR2:0x........]]
|
||||
; CHECK: [[ERROR]]: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "Error"
|
||||
; CHECK-NEXT: DW_AT_name ("Error")
|
||||
; CHECK: [[ERROR2]]: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "DifferentError"
|
||||
; CHECK-NEXT: DW_AT_name ("DifferentError")
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @f() #0 !dbg !5 {
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
; CHECK: [[TYPE:.*]]: DW_TAG_structure_type
|
||||
; Make sure we correctly handle containing type of a struct being a type identifier.
|
||||
; CHECK-NEXT: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]})
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}= "C")
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"C"
|
||||
|
||||
; Make sure we correctly handle context of a subprogram being a type identifier.
|
||||
; CHECK: [[SP:.*]]: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}}= "foo")
|
||||
; CHECK: DW_AT_name {{.*}}"foo"
|
||||
; Make sure we correctly handle containing type of a subprogram being a type identifier.
|
||||
; CHECK: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]})
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
|
@ -15,33 +15,33 @@
|
|||
; CHECK: NULL
|
||||
|
||||
; CHECK: [[TYPE2:.*]]: DW_TAG_structure_type
|
||||
; CHECK: DW_AT_name {{.*}}= "bar")
|
||||
; CHECK: DW_AT_name {{.*}}"bar"
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK: DW_AT_name {{.*}}= "D")
|
||||
; CHECK: DW_AT_name {{.*}}"D"
|
||||
; CHECK: DW_TAG_member
|
||||
; CHECK: DW_AT_name {{.*}}= "a")
|
||||
; CHECK: DW_AT_name {{.*}}"a"
|
||||
; Make sure we correctly handle context of a struct being a type identifier.
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}= "Nested")
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"Nested"
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}= "Nested2")
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"Nested2"
|
||||
; CHECK-NEXT: DW_AT_declaration [DW_FORM_flag] (0x01)
|
||||
; CHECK: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}= "virt<bar>")
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"virt<bar>"
|
||||
; Make sure we correctly handle type of a template_type being a type identifier.
|
||||
; CHECK: DW_TAG_template_type_parameter
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}= "T")
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"T"
|
||||
; Make sure we correctly handle derived-from of a typedef being a type identifier.
|
||||
; CHECK: DW_TAG_typedef
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}
|
||||
; CHECK: DW_AT_name {{.*}}= "baz2")
|
||||
; CHECK: DW_AT_name {{.*}}"baz2"
|
||||
; Make sure we correctly handle derived-from of a pointer type being a type identifier.
|
||||
; CHECK: DW_TAG_pointer_type
|
||||
; CHECK: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]}
|
||||
; CHECK: DW_TAG_typedef
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}
|
||||
; CHECK: DW_AT_name {{.*}}= "baz")
|
||||
; CHECK: DW_AT_name {{.*}}"baz"
|
||||
; Make sure we correctly handle derived-from of an array type being a type identifier.
|
||||
; CHECK: DW_TAG_array_type
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: %llc_dwarf -O0 -filetype=obj -o %t.o %s
|
||||
; RUN: llvm-dwarfdump -v -debug-info %t.o | FileCheck %s
|
||||
; RUN: llvm-dwarfdump -debug-info %t.o | FileCheck %s
|
||||
;
|
||||
; Test debug info for variadic function arguments.
|
||||
; Created from tools/clang/tests/CodeGenCXX/debug-info-varargs.cpp
|
||||
|
@ -12,7 +12,7 @@
|
|||
;
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "a"
|
||||
; CHECK: DW_AT_name ("a")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
|
@ -22,7 +22,7 @@
|
|||
;
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "b"
|
||||
; CHECK: DW_AT_name ("b")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NOT: DW_TAG
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
; definitions from -gmlt here.
|
||||
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "f3"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"f3"
|
||||
; CHECK-NEXT: DW_AT_inline
|
||||
|
||||
; Check that we only provide the minimal attributes on a subprogram to save space.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; Make sure the backend generates a single DIE and uses ref_addr.
|
||||
; CHECK: 0x[[BASE:.*]]: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} = "Base"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"Base"
|
||||
; CHECK-NOT: DW_TAG_structure_type
|
||||
; CHECK: 0x[[INT:.*]]: DW_TAG_base_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} = "int"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"int"
|
||||
; CHECK-NOT: DW_TAG_base_type
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
;
|
||||
; RUN: llvm-link %s %p/type-unique-odr-b.ll -S -o - \
|
||||
; RUN: | %llc_dwarf -dwarf-linkage-names=All -filetype=obj -O0 \
|
||||
; RUN: | llvm-dwarfdump -v -debug-info - \
|
||||
; RUN: | llvm-dwarfdump -debug-info - \
|
||||
; RUN: | FileCheck %s
|
||||
; RUN: llvm-link %p/type-unique-odr-b.ll %s -S -o - \
|
||||
; RUN: | %llc_dwarf -dwarf-linkage-names=All -filetype=obj -O0 \
|
||||
; RUN: | llvm-dwarfdump -v -debug-info - \
|
||||
; RUN: | llvm-dwarfdump -debug-info - \
|
||||
; RUN: | FileCheck %s
|
||||
;
|
||||
; Test ODR-based type uniquing for C++ class members.
|
||||
|
@ -30,16 +30,16 @@
|
|||
; }
|
||||
;
|
||||
; CHECK: DW_TAG_class_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "A"
|
||||
; CHECK-NEXT: DW_AT_name ("A")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_member
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "data"
|
||||
; CHECK-NEXT: DW_AT_name ("data")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_linkage_name {{.*}} "_ZN1A6getFooEv"
|
||||
; CHECK: DW_AT_linkage_name ("_ZN1A6getFooEv")
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_name {{.*}} "getFoo"
|
||||
; CHECK: DW_AT_name ("getFoo")
|
||||
|
||||
; Ensure that there aren't any other subprograms in class A.
|
||||
; CHECK-NOT: DW_TAG
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
|
||||
; Make sure the backend generates a single DIE and uses ref_addr.
|
||||
; CHECK: 0x[[BASE:.*]]: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} = "Base"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"Base"
|
||||
; CHECK-NOT: DW_TAG_structure_type
|
||||
; CHECK: 0x[[INT:.*]]: DW_TAG_base_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} = "int"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"int"
|
||||
; CHECK-NOT: DW_TAG_base_type
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
; return A().getFoo();
|
||||
; }
|
||||
;
|
||||
; CHECK: DW_AT_name {{.*}} "setFoo"
|
||||
; CHECK: DW_AT_name {{.*}}"setFoo"
|
||||
; CHECK-NOT: DW_TAG
|
||||
; CHECK: DW_AT_accessibility [DW_FORM_data1] (DW_ACCESS_public)
|
||||
; CHECK-NOT: DW_AT_accessibility
|
||||
|
|
|
@ -21,20 +21,20 @@
|
|||
;
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_TAG_class_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "A"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"A"
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}} "testA"
|
||||
; CHECK: DW_AT_name {{.*}}"testA"
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[STRUCT:.*]]}
|
||||
; CHECK: 0x[[STRUCT]]: DW_TAG_structure_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "SA"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"SA"
|
||||
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_TAG_class_type
|
||||
; CHECK-NEXT: DW_AT_name {{.*}} "B"
|
||||
; CHECK-NEXT: DW_AT_name {{.*}}"B"
|
||||
; CHECK: DW_TAG_subprogram
|
||||
; CHECK: DW_AT_name {{.*}} "testB"
|
||||
; CHECK: DW_AT_name {{.*}}"testB"
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK: DW_TAG_formal_parameter
|
||||
; CHECK-NEXT: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[STRUCT]]
|
||||
|
|
Loading…
Reference in New Issue