blob: 4da4fd4c926edf327595ade1fc7e149eaa4f6009 [file] [log] [blame]
Ahmed Bougacha279e3ee2015-04-18 01:21:58 +00001; RUN: llc -arm-global-merge -global-merge-group-by-use=false -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s
Devang Pateldc9cbaa2011-08-03 01:25:46 +00002
3; Check debug info output for merged global.
4; DW_AT_location
David Blaikiecabf54a2014-08-05 23:57:31 +00005; 0x03 DW_OP_addr
6; 0x.. .long __MergedGlobals
7; 0x10 DW_OP_constu
8; 0x.. offset
9; 0x22 DW_OP_plus
Devang Pateldc9cbaa2011-08-03 01:25:46 +000010
David Blaikiecabf54a2014-08-05 23:57:31 +000011; CHECK: DW_TAG_variable
12; CHECK-NOT: DW_TAG
13; CHECK: DW_AT_name {{.*}} "x1"
14; CHECK-NOT: {{DW_TAG|NULL}}
15; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR:.. .. .. ..]] 10 00 22 )
16; CHECK: DW_TAG_variable
17; CHECK-NOT: DW_TAG
18; CHECK: DW_AT_name {{.*}} "x2"
19; CHECK-NOT: {{DW_TAG|NULL}}
20; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR]] 10 04 22 )
Devang Pateldc9cbaa2011-08-03 01:25:46 +000021
22target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"
23target triple = "thumbv7-apple-macosx10.7.0"
24
25@x1 = internal unnamed_addr global i32 1, align 4
26@x2 = internal unnamed_addr global i32 2, align 4
27@x3 = internal unnamed_addr global i32 3, align 4
28@x4 = internal unnamed_addr global i32 4, align 4
29@x5 = global i32 0, align 4
30
Peter Collingbourned4bff302015-11-05 22:03:56 +000031define i32 @get1(i32 %a) nounwind optsize ssp !dbg !1 {
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000032 tail call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !10, metadata !DIExpression()), !dbg !30
David Blaikiea79ac142015-02-27 21:17:42 +000033 %1 = load i32, i32* @x1, align 4, !dbg !31
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000034 tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !11, metadata !DIExpression()), !dbg !31
Devang Pateldc9cbaa2011-08-03 01:25:46 +000035 store i32 %a, i32* @x1, align 4, !dbg !31
36 ret i32 %1, !dbg !31
37}
38
Peter Collingbourned4bff302015-11-05 22:03:56 +000039define i32 @get2(i32 %a) nounwind optsize ssp !dbg !6 {
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000040 tail call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !13, metadata !DIExpression()), !dbg !32
David Blaikiea79ac142015-02-27 21:17:42 +000041 %1 = load i32, i32* @x2, align 4, !dbg !33
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000042 tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !14, metadata !DIExpression()), !dbg !33
Devang Pateldc9cbaa2011-08-03 01:25:46 +000043 store i32 %a, i32* @x2, align 4, !dbg !33
44 ret i32 %1, !dbg !33
45}
46
Peter Collingbourned4bff302015-11-05 22:03:56 +000047define i32 @get3(i32 %a) nounwind optsize ssp !dbg !7 {
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000048 tail call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !16, metadata !DIExpression()), !dbg !34
David Blaikiea79ac142015-02-27 21:17:42 +000049 %1 = load i32, i32* @x3, align 4, !dbg !35
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000050 tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !17, metadata !DIExpression()), !dbg !35
Devang Pateldc9cbaa2011-08-03 01:25:46 +000051 store i32 %a, i32* @x3, align 4, !dbg !35
52 ret i32 %1, !dbg !35
53}
54
Peter Collingbourned4bff302015-11-05 22:03:56 +000055define i32 @get4(i32 %a) nounwind optsize ssp !dbg !8 {
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000056 tail call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !19, metadata !DIExpression()), !dbg !36
David Blaikiea79ac142015-02-27 21:17:42 +000057 %1 = load i32, i32* @x4, align 4, !dbg !37
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000058 tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !20, metadata !DIExpression()), !dbg !37
Devang Pateldc9cbaa2011-08-03 01:25:46 +000059 store i32 %a, i32* @x4, align 4, !dbg !37
60 ret i32 %1, !dbg !37
61}
62
Peter Collingbourned4bff302015-11-05 22:03:56 +000063define i32 @get5(i32 %a) nounwind optsize ssp !dbg !9 {
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000064 tail call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !27, metadata !DIExpression()), !dbg !38
David Blaikiea79ac142015-02-27 21:17:42 +000065 %1 = load i32, i32* @x5, align 4, !dbg !39
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000066 tail call void @llvm.dbg.value(metadata i32 %1, i64 0, metadata !28, metadata !DIExpression()), !dbg !39
Devang Pateldc9cbaa2011-08-03 01:25:46 +000067 store i32 %a, i32* @x5, align 4, !dbg !39
68 ret i32 %1, !dbg !39
69}
70
Adrian Prantl87b7eb92014-10-01 18:55:02 +000071declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone
Devang Pateldc9cbaa2011-08-03 01:25:46 +000072
73!llvm.dbg.cu = !{!0}
Manman Ren409558f2013-11-22 21:49:45 +000074!llvm.module.flags = !{!49}
Devang Pateldc9cbaa2011-08-03 01:25:46 +000075
Adrian Prantl75819ae2016-04-15 15:57:41 +000076!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, globals: !41, imports: !48)
77!1 = distinct !DISubprogram(name: "get1", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !47, scope: !2, type: !3, variables: !42)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000078!2 = !DIFile(filename: "ss3.c", directory: "/private/tmp")
79!3 = !DISubroutineType(types: !4)
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000080!4 = !{!5}
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000081!5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
Adrian Prantl75819ae2016-04-15 15:57:41 +000082!6 = distinct !DISubprogram(name: "get2", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 8, file: !47, scope: !2, type: !3, variables: !43)
83!7 = distinct !DISubprogram(name: "get3", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 11, file: !47, scope: !2, type: !3, variables: !44)
84!8 = distinct !DISubprogram(name: "get4", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 14, file: !47, scope: !2, type: !3, variables: !45)
85!9 = distinct !DISubprogram(name: "get5", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 17, file: !47, scope: !2, type: !3, variables: !46)
Duncan P. N. Exon Smithed013cd2015-07-31 18:58:39 +000086!10 = !DILocalVariable(name: "a", line: 5, arg: 1, scope: !1, file: !2, type: !5)
87!11 = !DILocalVariable(name: "b", line: 5, scope: !12, file: !2, type: !5)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000088!12 = distinct !DILexicalBlock(line: 5, column: 19, file: !47, scope: !1)
Duncan P. N. Exon Smithed013cd2015-07-31 18:58:39 +000089!13 = !DILocalVariable(name: "a", line: 8, arg: 1, scope: !6, file: !2, type: !5)
90!14 = !DILocalVariable(name: "b", line: 8, scope: !15, file: !2, type: !5)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000091!15 = distinct !DILexicalBlock(line: 8, column: 17, file: !47, scope: !6)
Duncan P. N. Exon Smithed013cd2015-07-31 18:58:39 +000092!16 = !DILocalVariable(name: "a", line: 11, arg: 1, scope: !7, file: !2, type: !5)
93!17 = !DILocalVariable(name: "b", line: 11, scope: !18, file: !2, type: !5)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000094!18 = distinct !DILexicalBlock(line: 11, column: 19, file: !47, scope: !7)
Duncan P. N. Exon Smithed013cd2015-07-31 18:58:39 +000095!19 = !DILocalVariable(name: "a", line: 14, arg: 1, scope: !8, file: !2, type: !5)
96!20 = !DILocalVariable(name: "b", line: 14, scope: !21, file: !2, type: !5)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +000097!21 = distinct !DILexicalBlock(line: 14, column: 19, file: !47, scope: !8)
98!25 = !DIGlobalVariable(name: "x1", line: 4, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5, variable: i32* @x1)
99!26 = !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5, variable: i32* @x2)
Duncan P. N. Exon Smithed013cd2015-07-31 18:58:39 +0000100!27 = !DILocalVariable(name: "a", line: 17, arg: 1, scope: !9, file: !2, type: !5)
101!28 = !DILocalVariable(name: "b", line: 17, scope: !29, file: !2, type: !5)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +0000102!29 = distinct !DILexicalBlock(line: 17, column: 19, file: !47, scope: !9)
103!30 = !DILocation(line: 5, column: 16, scope: !1)
104!31 = !DILocation(line: 5, column: 32, scope: !12)
105!32 = !DILocation(line: 8, column: 14, scope: !6)
106!33 = !DILocation(line: 8, column: 29, scope: !15)
107!34 = !DILocation(line: 11, column: 16, scope: !7)
108!35 = !DILocation(line: 11, column: 32, scope: !18)
109!36 = !DILocation(line: 14, column: 16, scope: !8)
110!37 = !DILocation(line: 14, column: 32, scope: !21)
111!38 = !DILocation(line: 17, column: 16, scope: !9)
112!39 = !DILocation(line: 17, column: 32, scope: !29)
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +0000113!41 = !{!25, !26}
114!42 = !{!10, !11}
115!43 = !{!13, !14}
116!44 = !{!16, !17}
117!45 = !{!19, !20}
118!46 = !{!27, !28}
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +0000119!47 = !DIFile(filename: "ss3.c", directory: "/private/tmp")
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +0000120!48 = !{}
Duncan P. N. Exon Smithe2741802015-03-03 17:24:31 +0000121!49 = !{i32 1, !"Debug Info Version", i32 3}