1; RUN: llvm-link -S -o - %s %S/Inputs/dicompositetype-unique.ll \ 2; RUN: | FileCheck %s -check-prefix CHECK -check-prefix FORWARD 3; RUN: llvm-link -S -o - %S/Inputs/dicompositetype-unique.ll %s \ 4; RUN: | FileCheck %s -check-prefix CHECK -check-prefix REVERSE 5; RUN: llvm-link -disable-debug-info-type-map -S -o - %s %S/Inputs/dicompositetype-unique.ll \ 6; RUN: | FileCheck %s -check-prefix NOMAP 7 8; Check that the bitcode reader handles this too. 9; RUN: llvm-as -o %t1.bc <%s 10; RUN: llvm-as -o %t2.bc <%S/Inputs/dicompositetype-unique.ll 11; RUN: llvm-link -S -o - %t1.bc %t2.bc \ 12; RUN: | FileCheck %s -check-prefix CHECK -check-prefix FORWARD 13; RUN: llvm-link -S -o - %t2.bc %t1.bc \ 14; RUN: | FileCheck %s -check-prefix CHECK -check-prefix REVERSE 15; RUN: llvm-link -disable-debug-info-type-map -S -o - %t1.bc %t2.bc \ 16; RUN: | FileCheck %s -check-prefix NOMAP 17 18; Check that the type map will unique two DICompositeTypes. 19 20; CHECK: !named = !{!0, !1, !2, !3, !0, !1, !2, !3} 21; NOMAP: !named = !{!0, !1, !2, !3, !0, !4, !5, !6} 22!named = !{!0, !1, !2, !3} 23 24; Check both directions. 25; CHECK: !1 = distinct !DICompositeType( 26; FORWARD-SAME: name: "T1" 27; REVERSE-SAME: name: "T2" 28; CHECK-SAME: identifier: "T" 29; CHECK-NOT: identifier: "T" 30; CHECK: !2 = distinct !DICompositeType( 31; CHECK-SAME: name: "FwdTDef" 32; CHECK-SAME: identifier: "FwdT" 33; CHECK-NOT: identifier: "FwdT" 34; CHECK: !3 = distinct !DICompositeType( 35; FORWARD-SAME: name: "BothFwdT1" 36; REVERSE-SAME: name: "BothFwdT2" 37; CHECK-SAME: identifier: "BothFwdT" 38; CHECK-NOT: identifier: "BothFwdT" 39 40; These types are different, so we should get both copies when there is no map. 41; NOMAP: !1 = !DICompositeType( 42; NOMAP-SAME: name: "T1" 43; NOMAP-SAME: identifier: "T" 44; NOMAP: !2 = !DICompositeType( 45; NOMAP-SAME: name: "FwdTFwd" 46; NOMAP-SAME: identifier: "FwdT" 47; NOMAP: !3 = !DICompositeType( 48; NOMAP-SAME: name: "BothFwdT1" 49; NOMAP-SAME: identifier: "BothFwdT" 50; NOMAP: !4 = !DICompositeType( 51; NOMAP-SAME: name: "T2" 52; NOMAP-SAME: identifier: "T" 53; NOMAP-NOT: identifier: "T" 54; NOMAP: !5 = !DICompositeType( 55; NOMAP-SAME: name: "FwdTDef" 56; NOMAP-SAME: identifier: "FwdT" 57; NOMAP-NOT: identifier: "FwdT" 58; NOMAP: !6 = !DICompositeType( 59; NOMAP-SAME: name: "BothFwdT2" 60; NOMAP-SAME: identifier: "BothFwdT" 61; NOMAP-NOT: identifier: "BothFwdT" 62!0 = !DIFile(filename: "abc", directory: "/path/to") 63!1 = !DICompositeType(tag: DW_TAG_class_type, name: "T1", identifier: "T", file: !0) 64!2 = !DICompositeType(tag: DW_TAG_class_type, flags: DIFlagFwdDecl, name: "FwdTFwd", identifier: "FwdT", file: !0) 65!3 = !DICompositeType(tag: DW_TAG_class_type, flags: DIFlagFwdDecl, name: "BothFwdT1", identifier: "BothFwdT", file: !0) 66