1b61ac4a8Savl-llvm /* Compile with: 2b61ac4a8Savl-llvm clang -g -c odr-uniquing.cpp -o odr-uniquing/1.o 3b61ac4a8Savl-llvm cp odr-uniquing/1.o odr-uniquing/2.o 4b61ac4a8Savl-llvm The aim of these test is to check that all the 'type types' that 5b61ac4a8Savl-llvm should be uniqued through the ODR really are. 6b61ac4a8Savl-llvm 7b61ac4a8Savl-llvm The resulting object file is linked against itself using a fake 8b61ac4a8Savl-llvm debug map. The end result is: 9b61ac4a8Savl-llvm - with ODR uniquing: all types in second and third CUs should point back 10b61ac4a8Savl-llvm to the types of the first CU(except types from anonymous namespace). 11b61ac4a8Savl-llvm - without ODR uniquing: all types are re-emited in the second CU. 12b61ac4a8Savl-llvm */ 13b61ac4a8Savl-llvm 14b61ac4a8Savl-llvm /* Check by llvm-dwarfdump --verify */ 15*f1fdfe68SAlexey Lapshin // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ 16b61ac4a8Savl-llvm // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump --verify - | \ 17b61ac4a8Savl-llvm // RUN: FileCheck -check-prefixes=VERIFY %s 18*f1fdfe68SAlexey Lapshin // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ 19b61ac4a8Savl-llvm // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump --verify - | \ 20b61ac4a8Savl-llvm // RUN: FileCheck -check-prefixes=VERIFY %s 21b61ac4a8Savl-llvm 22b61ac4a8Savl-llvm /* Check for llvm-dwarfdump -a output */ 23*f1fdfe68SAlexey Lapshin // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ 24b61ac4a8Savl-llvm // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump -v -a - | \ 25b61ac4a8Savl-llvm // RUN: FileCheck -check-prefixes=CHECK %s 26*f1fdfe68SAlexey Lapshin // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ 27b61ac4a8Savl-llvm // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump -v -a - | \ 28b61ac4a8Savl-llvm // RUN: FileCheck -check-prefixes=CHECK-NOODR %s 29b61ac4a8Savl-llvm 30b61ac4a8Savl-llvm struct S { 31b61ac4a8Savl-llvm struct Nested {}; 32b61ac4a8Savl-llvm }; 33b61ac4a8Savl-llvm 34b61ac4a8Savl-llvm namespace N { 35b61ac4a8Savl-llvm class C {}; 36b61ac4a8Savl-llvm } // namespace N 37b61ac4a8Savl-llvm 38b61ac4a8Savl-llvm union U { 39b61ac4a8Savl-llvm class C { 40b61ac4a8Savl-llvm } C; 41b61ac4a8Savl-llvm struct S { 42b61ac4a8Savl-llvm } S; 43b61ac4a8Savl-llvm }; 44b61ac4a8Savl-llvm 45b61ac4a8Savl-llvm typedef S AliasForS; 46b61ac4a8Savl-llvm 47b61ac4a8Savl-llvm namespace { 48b61ac4a8Savl-llvm class AnonC {}; 49b61ac4a8Savl-llvm } // namespace 50b61ac4a8Savl-llvm 51b61ac4a8Savl-llvm // This function is only here to hold objects that refer to the above types. foo()52b61ac4a8Savl-llvmvoid foo() { 53b61ac4a8Savl-llvm AliasForS s; 54b61ac4a8Savl-llvm S::Nested n; 55b61ac4a8Savl-llvm N::C nc; 56b61ac4a8Savl-llvm AnonC ac; 57b61ac4a8Savl-llvm U u; 58b61ac4a8Savl-llvm } 59b61ac4a8Savl-llvm 60b61ac4a8Savl-llvm // VERIFY: Verifying .debug_abbrev... 61b61ac4a8Savl-llvm // VERIFY: Verifying .debug_info Unit Header Chain... 62b61ac4a8Savl-llvm // VERIFY: Verifying .debug_types Unit Header Chain... 63b61ac4a8Savl-llvm // VERIFY: Verifying .apple_names... 64b61ac4a8Savl-llvm // VERIFY: Verifying .apple_types... 65b61ac4a8Savl-llvm // VERIFY: Verifying .apple_namespaces... 66b61ac4a8Savl-llvm // VERIFY: Verifying .apple_objc... 67b61ac4a8Savl-llvm // VERIFY: No errors. 68b61ac4a8Savl-llvm 69b61ac4a8Savl-llvm // The first compile unit contains all the types: 70b61ac4a8Savl-llvm // CHECK: .debug_info contents 71b61ac4a8Savl-llvm // CHECK: DW_TAG_compile_unit 72b61ac4a8Savl-llvm // CHECK: DW_AT_language{{.*}} (DW_LANG_C_plus_plus) 73b61ac4a8Savl-llvm // CHECK: DW_AT_name{{.*}}"__artificial_type_unit") 74b61ac4a8Savl-llvm // CHECK: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]]) 75b61ac4a8Savl-llvm 76b61ac4a8Savl-llvm // CHECK:0x[[N_NAMESPACE:[0-9a-f]*]]:{{.*}}DW_TAG_namespace 77b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"N" 78b61ac4a8Savl-llvm 79b61ac4a8Savl-llvm // CHECK:0x[[C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type 80b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"C" 81b61ac4a8Savl-llvm // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) 82b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 83b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (35) 84b61ac4a8Savl-llvm 85b61ac4a8Savl-llvm // CHECK:0x[[S_STRUCTURE:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type 86b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"S" 87b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 88b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (22) 89b61ac4a8Savl-llvm 90b61ac4a8Savl-llvm // CHECK:0x[[S_STRUCTURE_NESTED:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type 91b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"Nested" 92b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp") 93b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (23) 94b61ac4a8Savl-llvm 95b61ac4a8Savl-llvm // CHECK:0x[[TYPEDEF_ALIASFORS:[0-9a-f]*]]:{{.*}}DW_TAG_typedef 96b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"AliasForS" 97b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 98b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (58) 99b61ac4a8Savl-llvm 100b61ac4a8Savl-llvm // CHECK:0x[[U_UNION:[0-9a-f]*]]:{{.*}}DW_TAG_union_type 101b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"U" 102b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 103b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (45) 104b61ac4a8Savl-llvm 105b61ac4a8Savl-llvm // CHECK:0x[[U_C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type 106b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"C" 107b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 108b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46) 109b61ac4a8Savl-llvm 110b61ac4a8Savl-llvm // CHECK:0x[[U_C_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member 111b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"C" 112b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 113b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46) 114b61ac4a8Savl-llvm 115b61ac4a8Savl-llvm // CHECK:0x[[U_S_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member 116b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"S" 117b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 118b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47) 119b61ac4a8Savl-llvm 120b61ac4a8Savl-llvm // CHECK:0x[[U_S_STRUCT:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type 121b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"S" 122b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 123b61ac4a8Savl-llvm // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47) 124b61ac4a8Savl-llvm 125b61ac4a8Savl-llvm // The second compile unit contains subprogram and its variables: 126b61ac4a8Savl-llvm // CHECK:DW_TAG_compile_unit 127b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp" 128b61ac4a8Savl-llvm // CHECK-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]]) 129b61ac4a8Savl-llvm 130b61ac4a8Savl-llvm // CHECK:DW_TAG_subprogram 131b61ac4a8Savl-llvm // CHECK:DW_AT_low_pc 132b61ac4a8Savl-llvm // CHECK:DW_AT_high_pc 133b61ac4a8Savl-llvm // CHECK:DW_AT_frame_base 134b61ac4a8Savl-llvm // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" 135b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"foo" 136b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 137b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (74) 138b61ac4a8Savl-llvm // CHECK:DW_AT_external 139b61ac4a8Savl-llvm 140b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 141b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"s" 142b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 143b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (75) 144b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS 145b61ac4a8Savl-llvm 146b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 147b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"n" 148b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 149b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (76) 150b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste 151b61ac4a8Savl-llvm 152b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 153b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"nc" 154b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 155b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (77) 156b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C" 157b61ac4a8Savl-llvm 158b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 159b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"ac" 160b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 161b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (78) 162b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS1:[0-9a-f]*]]} "(anonymous namespace)::AnonC") 163b61ac4a8Savl-llvm 164b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 165b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"u" 166b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 167b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (79) 168b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U" 169b61ac4a8Savl-llvm 170b61ac4a8Savl-llvm // CHECK:0x[[ANON_NAMESPACE1:[0-9a-f]*]]:{{.*}}DW_TAG_namespace 171b61ac4a8Savl-llvm // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp" 172b61ac4a8Savl-llvm 173b61ac4a8Savl-llvm // CHECK:0x[[ANON_CLASS1]]:{{.*}}DW_TAG_class_type 174b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"AnonC" 175b61ac4a8Savl-llvm // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) 176b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 177b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (65) 178b61ac4a8Savl-llvm 179b61ac4a8Savl-llvm // The third compile unit contains subprogram and its variables: 180b61ac4a8Savl-llvm // CHECK:DW_TAG_compile_unit 181b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp" 182b61ac4a8Savl-llvm // CHECK-NEXT:DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF3:[0-9a-f]*]]) 183b61ac4a8Savl-llvm 184b61ac4a8Savl-llvm // CHECK:DW_TAG_subprogram 185b61ac4a8Savl-llvm // CHECK:DW_AT_low_pc 186b61ac4a8Savl-llvm // CHECK:DW_AT_high_pc 187b61ac4a8Savl-llvm // CHECK:DW_AT_frame_base 188b61ac4a8Savl-llvm // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" 189b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"foo" 190b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 191b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (74) 192b61ac4a8Savl-llvm // CHECK:DW_AT_external 193b61ac4a8Savl-llvm 194b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 195b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"s" 196b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 197b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (75) 198b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS 199b61ac4a8Savl-llvm 200b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 201b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"n" 202b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 203b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (76) 204b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste 205b61ac4a8Savl-llvm 206b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 207b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"nc" 208b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 209b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (77) 210b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C" 211b61ac4a8Savl-llvm 212b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 213b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"ac" 214b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 215b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (78) 216b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS2:[0-9a-f]*]]} "(anonymous namespace)::AnonC") 217b61ac4a8Savl-llvm 218b61ac4a8Savl-llvm // CHECK:DW_TAG_variable 219b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"u" 220b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 221b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (79) 222b61ac4a8Savl-llvm // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U" 223b61ac4a8Savl-llvm 224b61ac4a8Savl-llvm // CHECK:0x[[ANON_NAMESPACE2:[0-9a-f]*]]:{{.*}}DW_TAG_namespace 225b61ac4a8Savl-llvm // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp" 226b61ac4a8Savl-llvm 227b61ac4a8Savl-llvm // CHECK:0x[[ANON_CLASS2]]:{{.*}}DW_TAG_class_type 228b61ac4a8Savl-llvm // CHECK:DW_AT_name{{.*}}"AnonC" 229b61ac4a8Savl-llvm // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) 230b61ac4a8Savl-llvm // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp 231b61ac4a8Savl-llvm // CHECK:DW_AT_decl_line [DW_FORM_data1] (65) 232b61ac4a8Savl-llvm 233b61ac4a8Savl-llvm // CHECK:.debug_aranges contents 234b61ac4a8Savl-llvm 235b61ac4a8Savl-llvm // CHECK:debug_line[0x[[LINE_TABLE_OFF1]]] 236b61ac4a8Savl-llvm 237b61ac4a8Savl-llvm // CHECK:debug_line[0x[[LINE_TABLE_OFF2]]] 238b61ac4a8Savl-llvm 239b61ac4a8Savl-llvm // CHECK:debug_line[0x[[LINE_TABLE_OFF3]]] 240b61ac4a8Savl-llvm 241b61ac4a8Savl-llvm // CHECK:.debug_str contents: 242b61ac4a8Savl-llvm // CHECK:0x00000000: "" 243b61ac4a8Savl-llvm // CHECK:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)" 244b61ac4a8Savl-llvm // CHECK:0x00000038: "odr-uniquing.cpp" 245b61ac4a8Savl-llvm // CHECK:0x00000049: "/tmp" 246b61ac4a8Savl-llvm // CHECK:0x0000004e: "_Z3foov" 247b61ac4a8Savl-llvm // CHECK:0x00000056: "foo" 248b61ac4a8Savl-llvm // CHECK:0x0000005a: "s" 249b61ac4a8Savl-llvm // CHECK:0x0000005c: "n" 250b61ac4a8Savl-llvm // CHECK:0x0000005e: "nc" 251b61ac4a8Savl-llvm // CHECK:0x00000061: "ac" 252b61ac4a8Savl-llvm // CHECK:0x00000064: "u" 253b61ac4a8Savl-llvm // CHECK:0x00000066: "AnonC" 254b61ac4a8Savl-llvm // CHECK:0x0000006c: "(anonymous namespace)" 255b61ac4a8Savl-llvm // CHECK:0x00000082: "llvm DWARFLinkerParallel library version " 256b61ac4a8Savl-llvm // CHECK:0x000000ac: "__artificial_type_unit" 257b61ac4a8Savl-llvm // CHECK:0x000000c3: "" 258b61ac4a8Savl-llvm // CHECK:0x000000c4: "AliasForS" 259b61ac4a8Savl-llvm // CHECK:0x000000ce: "C" 260b61ac4a8Savl-llvm // CHECK:0x000000d0: "N" 261b61ac4a8Savl-llvm // CHECK:0x000000d2: "Nested" 262b61ac4a8Savl-llvm // CHECK:0x000000d9: "S" 263b61ac4a8Savl-llvm // CHECK:0x000000db: "U" 264b61ac4a8Savl-llvm 265b61ac4a8Savl-llvm 266b61ac4a8Savl-llvm // CHECK:.apple_names 267b61ac4a8Savl-llvm // CHECK: Bucket count: 2 268b61ac4a8Savl-llvm // CHECK: String: {{.*}} "foo" 269b61ac4a8Savl-llvm // CHECK: String: {{.*}} "_Z3foov" 270b61ac4a8Savl-llvm 271b61ac4a8Savl-llvm // CHECK:.apple_types 272b61ac4a8Savl-llvm // CHECK: Bucket count: 6 273b61ac4a8Savl-llvm // CHECK: String: {{.*}} "AnonC" 274b61ac4a8Savl-llvm // CHECK: String: {{.*}} "Nested" 275b61ac4a8Savl-llvm // CHECK: String: {{.*}} "S" 276b61ac4a8Savl-llvm // CHECK: String: {{.*}} "C" 277b61ac4a8Savl-llvm // CHECK: String: {{.*}} "U" 278b61ac4a8Savl-llvm // CHECK: String: {{.*}} "AliasForS" 279b61ac4a8Savl-llvm 280b61ac4a8Savl-llvm // CHECK:.apple_namespaces 281b61ac4a8Savl-llvm // CHECK: Bucket count: 2 282b61ac4a8Savl-llvm // CHECK: String: {{.*}} "(anonymous namespace)" 283b61ac4a8Savl-llvm // CHECK: String: {{.*}} "N" 284b61ac4a8Savl-llvm 285b61ac4a8Savl-llvm // CHECK:.apple_objc 286b61ac4a8Savl-llvm // CHECK:Bucket count: 1 287b61ac4a8Savl-llvm 288b61ac4a8Savl-llvm // CHECK-NOODR: .debug_info contents 289b61ac4a8Savl-llvm 290b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_compile_unit 291b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp" 292b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]]) 293b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_low_pc{{.*}}(0x{{0*}}[[LOW_PC1:[0-9a-f]*]]) 294b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_high_pc{{.*}}(0x{{0*}}[[HIGH_PC1:[0-9a-f]*]]) 295b61ac4a8Savl-llvm 296b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 297b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" 298b61ac4a8Savl-llvm 299b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 300b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"Nested" 301b61ac4a8Savl-llvm 302b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_namespace 303b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"N" 304b61ac4a8Savl-llvm 305b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 306b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" 307b61ac4a8Savl-llvm 308b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_union_type 309b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"U" 310b61ac4a8Savl-llvm 311b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_member 312b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" 313b61ac4a8Savl-llvm 314b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 315b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" 316b61ac4a8Savl-llvm 317b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_member 318b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" 319b61ac4a8Savl-llvm 320b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 321b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" 322b61ac4a8Savl-llvm 323b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_subprogram 324b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_low_pc 325b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_high_pc 326b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" 327b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"foo" 328b61ac4a8Savl-llvm 329b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 330b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"s" 331b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS" 332b61ac4a8Savl-llvm 333b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 334b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"n" 335b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested" 336b61ac4a8Savl-llvm 337b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 338b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"nc" 339b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"N::C" 340b61ac4a8Savl-llvm 341b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 342b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"ac" 343b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC" 344b61ac4a8Savl-llvm 345b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 346b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"u" 347b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"U" 348b61ac4a8Savl-llvm 349b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_typedef 350b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"S" 351b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS" 352b61ac4a8Savl-llvm 353b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_namespace 354b61ac4a8Savl-llvm 355b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 356b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"AnonC" 357b61ac4a8Savl-llvm 358b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_compile_unit 359b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp" 360b61ac4a8Savl-llvm // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]]) 361b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_low_pc 362b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_high_pc 363b61ac4a8Savl-llvm 364b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 365b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"S" 366b61ac4a8Savl-llvm 367b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 368b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"Nested" 369b61ac4a8Savl-llvm 370b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_namespace 371b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"N" 372b61ac4a8Savl-llvm 373b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 374b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"C" 375b61ac4a8Savl-llvm 376b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_union_type 377b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"U" 378b61ac4a8Savl-llvm 379b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_member 380b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"C" 381b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"U::C" 382b61ac4a8Savl-llvm 383b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 384b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"C" 385b61ac4a8Savl-llvm 386b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_member 387b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"S" 388b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"U::S" 389b61ac4a8Savl-llvm 390b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_structure_type 391b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"S" 392b61ac4a8Savl-llvm 393b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_subprogram 394b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_low_pc 395b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_high_pc 396b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" 397b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"foo" 398b61ac4a8Savl-llvm 399b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 400b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"s" 401b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS" 402b61ac4a8Savl-llvm 403b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 404b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"n" 405b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested" 406b61ac4a8Savl-llvm 407b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 408b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"nc" 409b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}} "N::C" 410b61ac4a8Savl-llvm 411b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 412b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"ac" 413b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC" 414b61ac4a8Savl-llvm 415b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_variable 416b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"u" 417b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"U" 418b61ac4a8Savl-llvm 419b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_typedef 420b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_type{{.*}}"S" 421b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS" 422b61ac4a8Savl-llvm 423b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_namespace 424b61ac4a8Savl-llvm 425b61ac4a8Savl-llvm // CHECK-NOODR: DW_TAG_class_type 426b61ac4a8Savl-llvm // CHECK-NOODR: DW_AT_name{{.*}}"AnonC" 427b61ac4a8Savl-llvm 428b61ac4a8Savl-llvm // CHECK-NOODR:.debug_aranges contents 429b61ac4a8Savl-llvm 430b61ac4a8Savl-llvm // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF1]]] 431b61ac4a8Savl-llvm 432b61ac4a8Savl-llvm // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF2]]] 433b61ac4a8Savl-llvm 434b61ac4a8Savl-llvm // CHECK-NOODR:.debug_str contents: 435b61ac4a8Savl-llvm // CHECK-NOODR:0x00000000: "" 436b61ac4a8Savl-llvm // CHECK-NOODR:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)" 437b61ac4a8Savl-llvm // CHECK-NOODR:0x00000038: "odr-uniquing.cpp" 438b61ac4a8Savl-llvm // CHECK-NOODR:0x00000049: "/tmp" 439b61ac4a8Savl-llvm // CHECK-NOODR:0x0000004e: "S" 440b61ac4a8Savl-llvm // CHECK-NOODR:0x00000050: "Nested" 441b61ac4a8Savl-llvm // CHECK-NOODR:0x00000057: "N" 442b61ac4a8Savl-llvm // CHECK-NOODR:0x00000059: "C" 443b61ac4a8Savl-llvm // CHECK-NOODR:0x0000005b: "U" 444b61ac4a8Savl-llvm // CHECK-NOODR:0x0000005d: "_Z3foov" 445b61ac4a8Savl-llvm // CHECK-NOODR:0x00000065: "foo" 446b61ac4a8Savl-llvm // CHECK-NOODR:0x00000069: "s" 447b61ac4a8Savl-llvm // CHECK-NOODR:0x0000006b: "n" 448b61ac4a8Savl-llvm // CHECK-NOODR:0x0000006d: "nc" 449b61ac4a8Savl-llvm // CHECK-NOODR:0x00000070: "ac" 450b61ac4a8Savl-llvm // CHECK-NOODR:0x00000073: "u" 451b61ac4a8Savl-llvm // CHECK-NOODR:0x00000075: "AliasForS" 452b61ac4a8Savl-llvm // CHECK-NOODR:0x0000007f: "AnonC" 453b61ac4a8Savl-llvm // CHECK-NOODR:0x00000085: "(anonymous namespace)" 454b61ac4a8Savl-llvm 455b61ac4a8Savl-llvm // CHECK-NOODR: .apple_names 456b61ac4a8Savl-llvm // CHECK-NOODR: Bucket count: 2 457b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "foo" 458b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "_Z3foov" 459b61ac4a8Savl-llvm 460b61ac4a8Savl-llvm // CHECK-NOODR: .apple_types 461b61ac4a8Savl-llvm // CHECK-NOODR: Bucket count: 6 462b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "AnonC" 463b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "Nested" 464b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "S" 465b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "C" 466b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "U" 467b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "AliasForS" 468b61ac4a8Savl-llvm 469b61ac4a8Savl-llvm // CHECK-NOODR: .apple_namespaces 470b61ac4a8Savl-llvm // CHECK-NOODR: Bucket count: 2 471b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "(anonymous namespace)" 472b61ac4a8Savl-llvm // CHECK-NOODR: String: {{.*}} "N" 473b61ac4a8Savl-llvm 474b61ac4a8Savl-llvm // CHECK-NOODR: .apple_objc 475b61ac4a8Savl-llvm // CHECK-NOODR:Bucket count: 1 476