[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:
Jake Egan 2021-10-31 09:48:54 -04:00
parent fa1dd5fdee
commit 1c2d3338eb
33 changed files with 195 additions and 195 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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