[InstCombine] Signed saturation patterns
[llvm-core.git] / test / DebugInfo / X86 / stmt-list-multiple-compile-units.ll
blob97f8b6cdab44887d39eb5ecf04826cc573ccb4e5
1 ; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t
2 ; RUN: llvm-dwarfdump -v %t | FileCheck %s
3 ; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t -dwarf-version=3
4 ; RUN: llvm-dwarfdump -v %t | FileCheck %s -check-prefix=DWARF3
5 ; RUN: llc < %s -O0 -mtriple=x86_64-apple-macosx10.7 | FileCheck %s -check-prefix=ASM
7 ; rdar://13067005
8 ; CHECK: .debug_info contents:
9 ; CHECK: DW_TAG_compile_unit
10 ; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset]   (0x00000000)
11 ; CHECK: DW_AT_low_pc [DW_FORM_addr]            (0x0000000000000000)
12 ; CHECK: DW_AT_high_pc [DW_FORM_data4]          (0x00000010)
13 ; CHECK: DW_TAG_subprogram
14 ; CHECK: DW_AT_low_pc [DW_FORM_addr]            (0x0000000000000000)
15 ; CHECK: DW_AT_high_pc [DW_FORM_data4]          (0x00000010)
17 ; CHECK: DW_TAG_compile_unit
18 ; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset]   (0x0000003d)
19 ; CHECK: DW_AT_low_pc [DW_FORM_addr]            (0x0000000000000010)
20 ; CHECK: DW_AT_high_pc [DW_FORM_data4]          (0x00000009)
21 ; CHECK: DW_TAG_subprogram
22 ; CHECK: DW_AT_low_pc [DW_FORM_addr]            (0x0000000000000010)
23 ; CHECK: DW_AT_high_pc [DW_FORM_data4]          (0x00000009)
26 ; CHECK: .debug_line contents:
27 ; CHECK-NEXT: debug_line[{{.*}}]
28 ; CHECK-NEXT: Line table prologue:
29 ; CHECK-NEXT: total_length: 0x00000039
30 ; CHECK: file_names[  1]:
31 ; CHECK-NEXT: name: "simple.c"
32 ; CHECK-NEXT: dir_index: 0
33 ; CHECK: debug_line[{{.*}}]
34 ; CHECK-NEXT: Line table prologue:
35 ; CHECK-NEXT: total_length: 0x0000003a
36 ; CHECK: file_names[  1]:
37 ; CHECK-NEXT: name: "simple2.c"
38 ; CHECK-NEXT: dir_index: 0
39 ; CHECK-NOT: file_names
41 ; DWARF3: .debug_info contents:
42 ; DWARF3: DW_TAG_compile_unit
43 ; DWARF3: DW_AT_stmt_list [DW_FORM_data4]    (0x00000000)
45 ; DWARF3: DW_TAG_compile_unit
46 ; DWARF3: DW_AT_stmt_list [DW_FORM_data4]   (0x0000003c)
49 ; DWARF3: .debug_line contents:
50 ; DWARF3-NEXT: debug_line[{{.*}}]
51 ; DWARF3-NEXT: Line table prologue:
52 ; DWARF3-NEXT: total_length: 0x00000038
53 ; DWARF3: file_names[  1]:
54 ; DWARF3-NEXT: name: "simple.c"
55 ; DWARF3-NEXT: dir_index: 0
56 ; DWARF3: debug_line[{{.*}}]
57 ; DWARF3-NEXT: Line table prologue:
58 ; DWARF3-NEXT: total_length: 0x00000039
59 ; DWARF3: file_names[  1]:
60 ; DWARF3-NEXT: name: "simple2.c"
61 ; DWARF3-NEXT: dir_index: 0
62 ; DWARF3-NOT: file_names
64 ; PR15408
65 ; ASM: Lcu_begin0:
66 ; ASM-NOT: Lcu_begin
67 ; ASM: .set Lset[[LT:[0-9]+]], Lline_table_start0-Lsection_line ## DW_AT_stmt_list
68 ; ASM-NEXT: .long   Lset[[LT]]
69 ; ASM: Lcu_begin1:
70 ; ASM-NOT: Lcu_begin
71 ; ASM: .set Lset[[LT:[0-9]+]], Lline_table_start0-Lsection_line ## DW_AT_stmt_list
72 ; ASM-NEXT: .long   Lset[[LT]]
73 define i32 @test(i32 %a) nounwind uwtable ssp !dbg !5 {
74 entry:
75   %a.addr = alloca i32, align 4
76   store i32 %a, i32* %a.addr, align 4
77   call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !15, metadata !DIExpression()), !dbg !16
78   %0 = load i32, i32* %a.addr, align 4, !dbg !17
79   %call = call i32 @fn(i32 %0), !dbg !17
80   ret i32 %call, !dbg !17
83 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
85 define i32 @fn(i32 %a) nounwind uwtable ssp !dbg !13 {
86 entry:
87   %a.addr = alloca i32, align 4
88   store i32 %a, i32* %a.addr, align 4
89   call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !19, metadata !DIExpression()), !dbg !20
90   %0 = load i32, i32* %a.addr, align 4, !dbg !21
91   ret i32 %0, !dbg !21
94 !llvm.dbg.cu = !{!0, !10}
95 !llvm.module.flags = !{!25}
96 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3", isOptimized: false, emissionKind: FullDebug, file: !23, enums: !1, retainedTypes: !1, globals: !1, imports:  !1)
97 !1 = !{}
98 !5 = distinct !DISubprogram(name: "test", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !23, scope: !6, type: !7, retainedNodes: !1)
99 !6 = !DIFile(filename: "simple.c", directory: "/private/tmp")
100 !7 = !DISubroutineType(types: !8)
101 !8 = !{!9, !9}
102 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
103 !10 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3 (trunk 172862)", isOptimized: false, emissionKind: FullDebug, file: !24, enums: !1, retainedTypes: !1, globals: !1, imports:  !1)
104 !13 = distinct !DISubprogram(name: "fn", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !10, scopeLine: 1, file: !24, scope: !14, type: !7, retainedNodes: !1)
105 !14 = !DIFile(filename: "simple2.c", directory: "/private/tmp")
106 !15 = !DILocalVariable(name: "a", line: 2, arg: 1, scope: !5, file: !6, type: !9)
107 !16 = !DILocation(line: 2, scope: !5)
108 !17 = !DILocation(line: 4, scope: !18)
109 !18 = distinct !DILexicalBlock(line: 3, column: 0, file: !23, scope: !5)
110 !19 = !DILocalVariable(name: "a", line: 1, arg: 1, scope: !13, file: !14, type: !9)
111 !20 = !DILocation(line: 1, scope: !13)
112 !21 = !DILocation(line: 2, scope: !22)
113 !22 = distinct !DILexicalBlock(line: 1, column: 0, file: !24, scope: !13)
114 !23 = !DIFile(filename: "simple.c", directory: "/private/tmp")
115 !24 = !DIFile(filename: "simple2.c", directory: "/private/tmp")
116 !25 = !{i32 1, !"Debug Info Version", i32 3}