476 lines · cpp
1/* Compile with:2 clang -g -c odr-uniquing.cpp -o odr-uniquing/1.o3 cp odr-uniquing/1.o odr-uniquing/2.o4 The aim of these test is to check that all the 'type types' that5 should be uniqued through the ODR really are.6 7 The resulting object file is linked against itself using a fake8 debug map. The end result is:9 - with ODR uniquing: all types in second and third CUs should point back10 to the types of the first CU(except types from anonymous namespace).11 - without ODR uniquing: all types are re-emited in the second CU.12 */13 14/* Check by llvm-dwarfdump --verify */15// RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \16// RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump --verify - | \17// RUN: FileCheck -check-prefixes=VERIFY %s18// RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \19// RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump --verify - | \20// RUN: FileCheck -check-prefixes=VERIFY %s21 22/* Check for llvm-dwarfdump -a output */23// RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \24// RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump -v -a - | \25// RUN: FileCheck -check-prefixes=CHECK %s26// RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \27// RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump -v -a - | \28// RUN: FileCheck -check-prefixes=CHECK-NOODR %s29 30struct S {31 struct Nested {};32};33 34namespace N {35class C {};36} // namespace N37 38union U {39 class C {40 } C;41 struct S {42 } S;43};44 45typedef S AliasForS;46 47namespace {48class AnonC {};49} // namespace50 51// This function is only here to hold objects that refer to the above types.52void foo() {53 AliasForS s;54 S::Nested n;55 N::C nc;56 AnonC ac;57 U u;58}59 60// VERIFY: Verifying .debug_abbrev...61// VERIFY: Verifying .debug_info Unit Header Chain...62// VERIFY: Verifying .debug_types Unit Header Chain...63// VERIFY: Verifying .apple_names...64// VERIFY: Verifying .apple_types...65// VERIFY: Verifying .apple_namespaces...66// VERIFY: Verifying .apple_objc...67// VERIFY: No errors.68 69// The first compile unit contains all the types:70// CHECK: .debug_info contents71// CHECK: DW_TAG_compile_unit72// CHECK: DW_AT_language{{.*}} (DW_LANG_C_plus_plus)73// CHECK: DW_AT_name{{.*}}"__artificial_type_unit")74// CHECK: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]])75 76// CHECK:0x[[N_NAMESPACE:[0-9a-f]*]]:{{.*}}DW_TAG_namespace77// CHECK:DW_AT_name{{.*}}"N"78 79// CHECK:0x[[C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type80// CHECK:DW_AT_name{{.*}}"C"81// CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)82// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp83// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (35)84 85// CHECK:0x[[S_STRUCTURE:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type86// CHECK:DW_AT_name{{.*}}"S"87// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp88// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (22)89 90// CHECK:0x[[S_STRUCTURE_NESTED:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type91// CHECK:DW_AT_name{{.*}}"Nested"92// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp")93// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (23)94 95// CHECK:0x[[TYPEDEF_ALIASFORS:[0-9a-f]*]]:{{.*}}DW_TAG_typedef96// CHECK:DW_AT_name{{.*}}"AliasForS"97// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp98// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (58)99 100// CHECK:0x[[U_UNION:[0-9a-f]*]]:{{.*}}DW_TAG_union_type101// CHECK:DW_AT_name{{.*}}"U"102// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp103// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (45)104 105// CHECK:0x[[U_C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type106// CHECK:DW_AT_name{{.*}}"C"107// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp108// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46)109 110// CHECK:0x[[U_C_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member111// CHECK:DW_AT_name{{.*}}"C"112// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp113// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46)114 115// CHECK:0x[[U_S_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member116// CHECK:DW_AT_name{{.*}}"S"117// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp118// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47)119 120// CHECK:0x[[U_S_STRUCT:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type121// CHECK:DW_AT_name{{.*}}"S"122// CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp123// CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47)124 125// The second compile unit contains subprogram and its variables:126// CHECK:DW_TAG_compile_unit127// CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp"128// CHECK-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]])129 130// CHECK:DW_TAG_subprogram131// CHECK:DW_AT_low_pc132// CHECK:DW_AT_high_pc133// CHECK:DW_AT_frame_base134// CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"135// CHECK:DW_AT_name{{.*}}"foo"136// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp137// CHECK:DW_AT_decl_line [DW_FORM_data1] (74)138// CHECK:DW_AT_external139 140// CHECK:DW_TAG_variable141// CHECK:DW_AT_name{{.*}}"s"142// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp143// CHECK:DW_AT_decl_line [DW_FORM_data1] (75)144// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS145 146// CHECK:DW_TAG_variable147// CHECK:DW_AT_name{{.*}}"n"148// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp149// CHECK:DW_AT_decl_line [DW_FORM_data1] (76)150// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste151 152// CHECK:DW_TAG_variable153// CHECK:DW_AT_name{{.*}}"nc"154// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp155// CHECK:DW_AT_decl_line [DW_FORM_data1] (77)156// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C"157 158// CHECK:DW_TAG_variable159// CHECK:DW_AT_name{{.*}}"ac"160// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp161// CHECK:DW_AT_decl_line [DW_FORM_data1] (78)162// CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS1:[0-9a-f]*]]} "(anonymous namespace)::AnonC")163 164// CHECK:DW_TAG_variable165// CHECK:DW_AT_name{{.*}}"u"166// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp167// CHECK:DW_AT_decl_line [DW_FORM_data1] (79)168// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U"169 170// CHECK:0x[[ANON_NAMESPACE1:[0-9a-f]*]]:{{.*}}DW_TAG_namespace171// CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp"172 173// CHECK:0x[[ANON_CLASS1]]:{{.*}}DW_TAG_class_type174// CHECK:DW_AT_name{{.*}}"AnonC"175// CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)176// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp177// CHECK:DW_AT_decl_line [DW_FORM_data1] (65)178 179// The third compile unit contains subprogram and its variables:180// CHECK:DW_TAG_compile_unit181// CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp"182// CHECK-NEXT:DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF3:[0-9a-f]*]])183 184// CHECK:DW_TAG_subprogram185// CHECK:DW_AT_low_pc186// CHECK:DW_AT_high_pc187// CHECK:DW_AT_frame_base188// CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"189// CHECK:DW_AT_name{{.*}}"foo"190// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp191// CHECK:DW_AT_decl_line [DW_FORM_data1] (74)192// CHECK:DW_AT_external193 194// CHECK:DW_TAG_variable195// CHECK:DW_AT_name{{.*}}"s"196// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp197// CHECK:DW_AT_decl_line [DW_FORM_data1] (75)198// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS199 200// CHECK:DW_TAG_variable201// CHECK:DW_AT_name{{.*}}"n"202// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp203// CHECK:DW_AT_decl_line [DW_FORM_data1] (76)204// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste205 206// CHECK:DW_TAG_variable207// CHECK:DW_AT_name{{.*}}"nc"208// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp209// CHECK:DW_AT_decl_line [DW_FORM_data1] (77)210// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C"211 212// CHECK:DW_TAG_variable213// CHECK:DW_AT_name{{.*}}"ac"214// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp215// CHECK:DW_AT_decl_line [DW_FORM_data1] (78)216// CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS2:[0-9a-f]*]]} "(anonymous namespace)::AnonC")217 218// CHECK:DW_TAG_variable219// CHECK:DW_AT_name{{.*}}"u"220// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp221// CHECK:DW_AT_decl_line [DW_FORM_data1] (79)222// CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U"223 224// CHECK:0x[[ANON_NAMESPACE2:[0-9a-f]*]]:{{.*}}DW_TAG_namespace225// CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp"226 227// CHECK:0x[[ANON_CLASS2]]:{{.*}}DW_TAG_class_type228// CHECK:DW_AT_name{{.*}}"AnonC"229// CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)230// CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp231// CHECK:DW_AT_decl_line [DW_FORM_data1] (65)232 233// CHECK:.debug_aranges contents234 235// CHECK:debug_line[0x[[LINE_TABLE_OFF1]]]236 237// CHECK:debug_line[0x[[LINE_TABLE_OFF2]]]238 239// CHECK:debug_line[0x[[LINE_TABLE_OFF3]]]240 241// CHECK:.debug_str contents:242// CHECK:0x00000000: ""243// CHECK:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)"244// CHECK:0x00000038: "odr-uniquing.cpp"245// CHECK:0x00000049: "/tmp"246// CHECK:0x0000004e: "_Z3foov"247// CHECK:0x00000056: "foo"248// CHECK:0x0000005a: "s"249// CHECK:0x0000005c: "n"250// CHECK:0x0000005e: "nc"251// CHECK:0x00000061: "ac"252// CHECK:0x00000064: "u"253// CHECK:0x00000066: "AnonC"254// CHECK:0x0000006c: "(anonymous namespace)"255// CHECK:0x00000082: "llvm DWARFLinkerParallel library version "256// CHECK:0x000000ac: "__artificial_type_unit"257// CHECK:0x000000c3: ""258// CHECK:0x000000c4: "AliasForS"259// CHECK:0x000000ce: "C"260// CHECK:0x000000d0: "N"261// CHECK:0x000000d2: "Nested"262// CHECK:0x000000d9: "S"263// CHECK:0x000000db: "U"264 265 266// CHECK:.apple_names267// CHECK: Bucket count: 2268// CHECK: String: {{.*}} "foo"269// CHECK: String: {{.*}} "_Z3foov"270 271// CHECK:.apple_types272// CHECK: Bucket count: 6273// CHECK: String: {{.*}} "AnonC"274// CHECK: String: {{.*}} "Nested"275// CHECK: String: {{.*}} "S"276// CHECK: String: {{.*}} "C"277// CHECK: String: {{.*}} "U"278// CHECK: String: {{.*}} "AliasForS"279 280// CHECK:.apple_namespaces281// CHECK: Bucket count: 2282// CHECK: String: {{.*}} "(anonymous namespace)"283// CHECK: String: {{.*}} "N"284 285// CHECK:.apple_objc286// CHECK:Bucket count: 1287 288// CHECK-NOODR: .debug_info contents289 290// CHECK-NOODR: DW_TAG_compile_unit291// CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp"292// CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]])293// CHECK-NOODR: DW_AT_low_pc{{.*}}(0x{{0*}}[[LOW_PC1:[0-9a-f]*]])294// CHECK-NOODR-NEXT: DW_AT_high_pc{{.*}}(0x{{0*}}[[HIGH_PC1:[0-9a-f]*]])295 296// CHECK-NOODR: DW_TAG_structure_type297// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"298 299// CHECK-NOODR: DW_TAG_structure_type300// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"Nested"301 302// CHECK-NOODR: DW_TAG_namespace303// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"N"304 305// CHECK-NOODR: DW_TAG_class_type306// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"307 308// CHECK-NOODR: DW_TAG_union_type309// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"U"310 311// CHECK-NOODR: DW_TAG_member312// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"313 314// CHECK-NOODR: DW_TAG_class_type315// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"316 317// CHECK-NOODR: DW_TAG_member318// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"319 320// CHECK-NOODR: DW_TAG_structure_type321// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"322 323// CHECK-NOODR: DW_TAG_subprogram324// CHECK-NOODR-NEXT: DW_AT_low_pc325// CHECK-NOODR-NEXT: DW_AT_high_pc326// CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"327// CHECK-NOODR-NEXT: DW_AT_name{{.*}}"foo"328 329// CHECK-NOODR: DW_TAG_variable330// CHECK-NOODR: DW_AT_name{{.*}}"s"331// CHECK-NOODR: DW_AT_type{{.*}}"AliasForS"332 333// CHECK-NOODR: DW_TAG_variable334// CHECK-NOODR: DW_AT_name{{.*}}"n"335// CHECK-NOODR: DW_AT_type{{.*}}"S::Nested"336 337// CHECK-NOODR: DW_TAG_variable338// CHECK-NOODR: DW_AT_name{{.*}}"nc"339// CHECK-NOODR: DW_AT_type{{.*}}"N::C"340 341// CHECK-NOODR: DW_TAG_variable342// CHECK-NOODR: DW_AT_name{{.*}}"ac"343// CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC"344 345// CHECK-NOODR: DW_TAG_variable346// CHECK-NOODR: DW_AT_name{{.*}}"u"347// CHECK-NOODR: DW_AT_type{{.*}}"U"348 349// CHECK-NOODR: DW_TAG_typedef350// CHECK-NOODR: DW_AT_type{{.*}}"S"351// CHECK-NOODR: DW_AT_name{{.*}}"AliasForS"352 353// CHECK-NOODR: DW_TAG_namespace354 355// CHECK-NOODR: DW_TAG_class_type356// CHECK-NOODR: DW_AT_name{{.*}}"AnonC"357 358// CHECK-NOODR: DW_TAG_compile_unit359// CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp"360// CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]])361// CHECK-NOODR: DW_AT_low_pc362// CHECK-NOODR: DW_AT_high_pc363 364// CHECK-NOODR: DW_TAG_structure_type365// CHECK-NOODR: DW_AT_name{{.*}}"S"366 367// CHECK-NOODR: DW_TAG_structure_type368// CHECK-NOODR: DW_AT_name{{.*}}"Nested"369 370// CHECK-NOODR: DW_TAG_namespace371// CHECK-NOODR: DW_AT_name{{.*}}"N"372 373// CHECK-NOODR: DW_TAG_class_type374// CHECK-NOODR: DW_AT_name{{.*}}"C"375 376// CHECK-NOODR: DW_TAG_union_type377// CHECK-NOODR: DW_AT_name{{.*}}"U"378 379// CHECK-NOODR: DW_TAG_member380// CHECK-NOODR: DW_AT_name{{.*}}"C"381// CHECK-NOODR: DW_AT_type{{.*}}"U::C"382 383// CHECK-NOODR: DW_TAG_class_type384// CHECK-NOODR: DW_AT_name{{.*}}"C"385 386// CHECK-NOODR: DW_TAG_member387// CHECK-NOODR: DW_AT_name{{.*}}"S"388// CHECK-NOODR: DW_AT_type{{.*}}"U::S"389 390// CHECK-NOODR: DW_TAG_structure_type391// CHECK-NOODR: DW_AT_name{{.*}}"S"392 393// CHECK-NOODR: DW_TAG_subprogram394// CHECK-NOODR: DW_AT_low_pc395// CHECK-NOODR: DW_AT_high_pc396// CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"397// CHECK-NOODR: DW_AT_name{{.*}}"foo"398 399// CHECK-NOODR: DW_TAG_variable400// CHECK-NOODR: DW_AT_name{{.*}}"s"401// CHECK-NOODR: DW_AT_type{{.*}}"AliasForS"402 403// CHECK-NOODR: DW_TAG_variable404// CHECK-NOODR: DW_AT_name{{.*}}"n"405// CHECK-NOODR: DW_AT_type{{.*}}"S::Nested"406 407// CHECK-NOODR: DW_TAG_variable408// CHECK-NOODR: DW_AT_name{{.*}}"nc"409// CHECK-NOODR: DW_AT_type{{.*}} "N::C"410 411// CHECK-NOODR: DW_TAG_variable412// CHECK-NOODR: DW_AT_name{{.*}}"ac"413// CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC"414 415// CHECK-NOODR: DW_TAG_variable416// CHECK-NOODR: DW_AT_name{{.*}}"u"417// CHECK-NOODR: DW_AT_type{{.*}}"U"418 419// CHECK-NOODR: DW_TAG_typedef420// CHECK-NOODR: DW_AT_type{{.*}}"S"421// CHECK-NOODR: DW_AT_name{{.*}}"AliasForS"422 423// CHECK-NOODR: DW_TAG_namespace424 425// CHECK-NOODR: DW_TAG_class_type426// CHECK-NOODR: DW_AT_name{{.*}}"AnonC"427 428// CHECK-NOODR:.debug_aranges contents429 430// CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF1]]]431 432// CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF2]]]433 434// CHECK-NOODR:.debug_str contents:435// CHECK-NOODR:0x00000000: ""436// CHECK-NOODR:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)"437// CHECK-NOODR:0x00000038: "odr-uniquing.cpp"438// CHECK-NOODR:0x00000049: "/tmp"439// CHECK-NOODR:0x0000004e: "S"440// CHECK-NOODR:0x00000050: "Nested"441// CHECK-NOODR:0x00000057: "N"442// CHECK-NOODR:0x00000059: "C"443// CHECK-NOODR:0x0000005b: "U"444// CHECK-NOODR:0x0000005d: "_Z3foov"445// CHECK-NOODR:0x00000065: "foo"446// CHECK-NOODR:0x00000069: "s"447// CHECK-NOODR:0x0000006b: "n"448// CHECK-NOODR:0x0000006d: "nc"449// CHECK-NOODR:0x00000070: "ac"450// CHECK-NOODR:0x00000073: "u"451// CHECK-NOODR:0x00000075: "AliasForS"452// CHECK-NOODR:0x0000007f: "AnonC"453// CHECK-NOODR:0x00000085: "(anonymous namespace)"454 455// CHECK-NOODR: .apple_names456// CHECK-NOODR: Bucket count: 2457// CHECK-NOODR: String: {{.*}} "foo"458// CHECK-NOODR: String: {{.*}} "_Z3foov"459 460// CHECK-NOODR: .apple_types461// CHECK-NOODR: Bucket count: 6462// CHECK-NOODR: String: {{.*}} "AnonC"463// CHECK-NOODR: String: {{.*}} "Nested"464// CHECK-NOODR: String: {{.*}} "S"465// CHECK-NOODR: String: {{.*}} "C"466// CHECK-NOODR: String: {{.*}} "U"467// CHECK-NOODR: String: {{.*}} "AliasForS"468 469// CHECK-NOODR: .apple_namespaces470// CHECK-NOODR: Bucket count: 2471// CHECK-NOODR: String: {{.*}} "(anonymous namespace)"472// CHECK-NOODR: String: {{.*}} "N"473 474// CHECK-NOODR: .apple_objc475// CHECK-NOODR:Bucket count: 1476