Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / DebugInfo / COFF / dwarf-headers.ll
blob9d515f6cec6400482c4ff1aa0178c950c7516570
1 ; RUN: llc -dwarf-version=4 \
2 ; RUN:     -filetype=obj -O0 -mtriple=x86_64-unknown-windows-msvc < %s \
3 ; RUN:     | llvm-dwarfdump -v - | FileCheck %s --check-prefix=SINGLE-4
5 ; RUN: llc -split-dwarf-file=foo.dwo -split-dwarf-output=%t.dwo \
6 ; RUN:     -dwarf-version=4 \
7 ; RUN:     -filetype=obj -O0 -mtriple=x86_64-unknown-windows-msvc < %s \
8 ; RUN:     | llvm-dwarfdump -v - | FileCheck %s --check-prefix=O-4
9 ; RUN: llvm-dwarfdump -v %t.dwo | FileCheck %s --check-prefix=DWO-4
11 ; This test is derived from test/CodeGen/X86/dwarf-headers.ll
13 ; Looking for DWARF headers to be generated correctly.
14 ; There are 8 variants with 5 formats: v4 CU, v4 TU, v5 normal/partial CU,
15 ; v5 skeleton/split CU, v5 normal/split TU.  Some v5 variants differ only
16 ; in the unit_type code, and the skeleton/split CU differs from normal/partial
17 ; by having one extra field (dwo_id).
18 ; (v2 thru v4 CUs are all the same, and TUs were invented in v4,
19 ; so we don't bother checking older versions.)
21 ; Test case built from:
22 ;struct S {
23 ;  int s1;
24 ;};
26 ;S s;
28 ; Verify the v4 non-split headers.
29 ; Note that we check the exact offset of the DIEs because that tells us
30 ; the length of the header.
32 ; SINGLE-4: .debug_info contents:
33 ; SINGLE-4: 0x00000000: Compile Unit: {{.*}} version = 0x0004, abbr_offset
34 ; SINGLE-4: 0x0000000b: DW_TAG_compile_unit
36 ; Verify the v4 split headers.
38 ; O-4: .debug_info contents:
39 ; O-4: 0x00000000: Compile Unit: {{.*}} version = 0x0004, abbr_offset
40 ; O-4: 0x0000000b: DW_TAG_compile_unit
42 ; DWO-4: .debug_info.dwo contents:
43 ; DWO-4: 0x00000000: Compile Unit: {{.*}} version = 0x0004, abbr_offset
44 ; DWO-4: 0x0000000b: DW_TAG_compile_unit
47 ; ModuleID = 't.cpp'
48 source_filename = "t.cpp"
49 target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
50 target triple = "x86_64-unknown-windows-msvc"
52 %struct.S = type { i32 }
54 @"?s@@3US@@A" = dso_local global %struct.S zeroinitializer, align 4, !dbg !0
56 !llvm.dbg.cu = !{!2}
57 !llvm.module.flags = !{!9, !10, !11, !12, !13, !14}
58 !llvm.ident = !{!15}
60 !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
61 !1 = distinct !DIGlobalVariable(name: "s", linkageName: "?s@@3US@@A", scope: !2, file: !3, line: 5, type: !5, isLocal: false, isDefinition: true)
62 !2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 17.0.0 (https://github.com/llvm/llvm-project.git f1106ef6c9d14d5b516ec352279aeee8f9d12818)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None)
63 !3 = !DIFile(filename: "t.cpp", directory: "e:\\llvm-project\\foo")
64 !4 = !{!0}
65 !5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !3, line: 1, size: 32, flags: DIFlagTypePassByValue, elements: !6, identifier: ".?AUS@@")
66 !6 = !{!7}
67 !7 = !DIDerivedType(tag: DW_TAG_member, name: "s1", scope: !5, file: !3, line: 2, baseType: !8, size: 32)
68 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
69 !9 = !{i32 7, !"Dwarf Version", i32 4}
70 !10 = !{i32 2, !"Debug Info Version", i32 3}
71 !11 = !{i32 1, !"wchar_size", i32 2}
72 !12 = !{i32 8, !"PIC Level", i32 2}
73 !13 = !{i32 7, !"uwtable", i32 2}
74 !14 = !{i32 1, !"MaxTLSAlign", i32 65536}
75 !15 = !{!"clang version 17.0.0 (https://github.com/llvm/llvm-project.git f1106ef6c9d14d5b516ec352279aeee8f9d12818)"}