xref: /llvm-project/bolt/test/X86/Inputs/dwarf5-df-dualcu-helper.s (revision e51a6b7374ca2d11e07375843bf24ef51307308a)
1# clang++ -g -gdwarf-5 -emit-llvm -S helper.cpp
2# llc -O0 -mtriple=x86_64-unknown-linux-gnu helper.ll
3# int z = 0;
4# int d = 0;
5#
6# int helper(int z_, int d_) {
7#  z += z_;
8#  d += d_;
9#  return z * d;
10# }
11
12	.text
13	.file	"helper.cpp"
14	.file	0 "." "helper.cpp" md5 0xe635924a35b65444173d0c76a54b866f
15	.globl	_Z6helperii                     # -- Begin function _Z6helperii
16	.p2align	4, 0x90
17	.type	_Z6helperii,@function
18_Z6helperii:                            # @_Z6helperii
19.Lfunc_begin0:
20	.loc	0 4 0                           # helper.cpp:4:0
21	.cfi_startproc
22# %bb.0:                                # %entry
23	pushq	%rbp
24	.cfi_def_cfa_offset 16
25	.cfi_offset %rbp, -16
26	movq	%rsp, %rbp
27	.cfi_def_cfa_register %rbp
28	movl	%edi, -4(%rbp)
29	movl	%esi, -8(%rbp)
30.Ltmp0:
31	.loc	0 5 7 prologue_end              # helper.cpp:5:7
32	movl	-4(%rbp), %eax
33	.loc	0 5 4 is_stmt 0                 # helper.cpp:5:4
34	addl	z, %eax
35	movl	%eax, z
36	.loc	0 6 7 is_stmt 1                 # helper.cpp:6:7
37	movl	-8(%rbp), %eax
38	.loc	0 6 4 is_stmt 0                 # helper.cpp:6:4
39	addl	d, %eax
40	movl	%eax, d
41	.loc	0 7 9 is_stmt 1                 # helper.cpp:7:9
42	movl	z, %eax
43	.loc	0 7 11 is_stmt 0                # helper.cpp:7:11
44	imull	d, %eax
45	.loc	0 7 2                           # helper.cpp:7:2
46	popq	%rbp
47	.cfi_def_cfa %rsp, 8
48	retq
49.Ltmp1:
50.Lfunc_end0:
51	.size	_Z6helperii, .Lfunc_end0-_Z6helperii
52	.cfi_endproc
53                                        # -- End function
54	.type	z,@object                       # @z
55	.bss
56	.globl	z
57	.p2align	2
58z:
59	.long	0                               # 0x0
60	.size	z, 4
61
62	.type	d,@object                       # @d
63	.globl	d
64	.p2align	2
65d:
66	.long	0                               # 0x0
67	.size	d, 4
68
69	.section	.debug_abbrev,"",@progbits
70	.byte	1                               # Abbreviation Code
71	.byte	74                              # DW_TAG_skeleton_unit
72	.byte	0                               # DW_CHILDREN_no
73	.byte	16                              # DW_AT_stmt_list
74	.byte	23                              # DW_FORM_sec_offset
75	.byte	114                             # DW_AT_str_offsets_base
76	.byte	23                              # DW_FORM_sec_offset
77	.byte	27                              # DW_AT_comp_dir
78	.byte	37                              # DW_FORM_strx1
79	.ascii	"\264B"                         # DW_AT_GNU_pubnames
80	.byte	25                              # DW_FORM_flag_present
81	.byte	118                             # DW_AT_dwo_name
82	.byte	37                              # DW_FORM_strx1
83	.byte	17                              # DW_AT_low_pc
84	.byte	27                              # DW_FORM_addrx
85	.byte	18                              # DW_AT_high_pc
86	.byte	6                               # DW_FORM_data4
87	.byte	115                             # DW_AT_addr_base
88	.byte	23                              # DW_FORM_sec_offset
89	.byte	0                               # EOM(1)
90	.byte	0                               # EOM(2)
91	.byte	0                               # EOM(3)
92	.section	.debug_info,"",@progbits
93.Lcu_begin0:
94	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
95.Ldebug_info_start0:
96	.short	5                               # DWARF version number
97	.byte	4                               # DWARF Unit Type
98	.byte	8                               # Address Size (in bytes)
99	.long	.debug_abbrev                   # Offset Into Abbrev. Section
100	.quad	-3815466543033299045
101	.byte	1                               # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit
102	.long	.Lline_table_start0             # DW_AT_stmt_list
103	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
104	.byte	0                               # DW_AT_comp_dir
105                                        # DW_AT_GNU_pubnames
106	.byte	1                               # DW_AT_dwo_name
107	.byte	2                               # DW_AT_low_pc
108	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
109	.long	.Laddr_table_base0              # DW_AT_addr_base
110.Ldebug_info_end0:
111	.section	.debug_str_offsets,"",@progbits
112	.long	12                              # Length of String Offsets Set
113	.short	5
114	.short	0
115.Lstr_offsets_base0:
116	.section	.debug_str,"MS",@progbits,1
117.Lskel_string0:
118	.asciz	"."                             # string offset=0
119.Lskel_string1:
120	.asciz	"helper.dwo"                    # string offset=2
121	.section	.debug_str_offsets,"",@progbits
122	.long	.Lskel_string0
123	.long	.Lskel_string1
124	.section	.debug_str_offsets.dwo,"e",@progbits
125	.long	44                              # Length of String Offsets Set
126	.short	5
127	.short	0
128	.section	.debug_str.dwo,"eMS",@progbits,1
129.Linfo_string0:
130	.asciz	"z"                             # string offset=0
131.Linfo_string1:
132	.asciz	"int"                           # string offset=2
133.Linfo_string2:
134	.asciz	"d"                             # string offset=6
135.Linfo_string3:
136	.asciz	"_Z6helperii"                   # string offset=8
137.Linfo_string4:
138	.asciz	"helper"                        # string offset=20
139.Linfo_string5:
140	.asciz	"z_"                            # string offset=27
141.Linfo_string6:
142	.asciz	"d_"                            # string offset=30
143.Linfo_string7:
144	.asciz	"clang version 15.0.0"          # string offset=33
145.Linfo_string8:
146	.asciz	"helper.cpp"                    # string offset=54
147.Linfo_string9:
148	.asciz	"helper.dwo"                    # string offset=65
149	.section	.debug_str_offsets.dwo,"e",@progbits
150	.long	0
151	.long	2
152	.long	6
153	.long	8
154	.long	20
155	.long	27
156	.long	30
157	.long	33
158	.long	54
159	.long	65
160	.section	.debug_info.dwo,"e",@progbits
161	.long	.Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
162.Ldebug_info_dwo_start0:
163	.short	5                               # DWARF version number
164	.byte	5                               # DWARF Unit Type
165	.byte	8                               # Address Size (in bytes)
166	.long	0                               # Offset Into Abbrev. Section
167	.quad	-3815466543033299045
168	.byte	1                               # Abbrev [1] 0x14:0x48 DW_TAG_compile_unit
169	.byte	7                               # DW_AT_producer
170	.short	33                              # DW_AT_language
171	.byte	8                               # DW_AT_name
172	.byte	9                               # DW_AT_dwo_name
173	.byte	2                               # Abbrev [2] 0x1a:0xb DW_TAG_variable
174	.byte	0                               # DW_AT_name
175	.long	37                              # DW_AT_type
176                                        # DW_AT_external
177	.byte	0                               # DW_AT_decl_file
178	.byte	1                               # DW_AT_decl_line
179	.byte	2                               # DW_AT_location
180	.byte	161
181	.byte	0
182	.byte	3                               # Abbrev [3] 0x25:0x4 DW_TAG_base_type
183	.byte	1                               # DW_AT_name
184	.byte	5                               # DW_AT_encoding
185	.byte	4                               # DW_AT_byte_size
186	.byte	2                               # Abbrev [2] 0x29:0xb DW_TAG_variable
187	.byte	2                               # DW_AT_name
188	.long	37                              # DW_AT_type
189                                        # DW_AT_external
190	.byte	0                               # DW_AT_decl_file
191	.byte	2                               # DW_AT_decl_line
192	.byte	2                               # DW_AT_location
193	.byte	161
194	.byte	1
195	.byte	4                               # Abbrev [4] 0x34:0x27 DW_TAG_subprogram
196	.byte	2                               # DW_AT_low_pc
197	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
198	.byte	1                               # DW_AT_frame_base
199	.byte	86
200	.byte	3                               # DW_AT_linkage_name
201	.byte	4                               # DW_AT_name
202	.byte	0                               # DW_AT_decl_file
203	.byte	4                               # DW_AT_decl_line
204	.long	37                              # DW_AT_type
205                                        # DW_AT_external
206	.byte	5                               # Abbrev [5] 0x44:0xb DW_TAG_formal_parameter
207	.byte	2                               # DW_AT_location
208	.byte	145
209	.byte	124
210	.byte	5                               # DW_AT_name
211	.byte	0                               # DW_AT_decl_file
212	.byte	4                               # DW_AT_decl_line
213	.long	37                              # DW_AT_type
214	.byte	5                               # Abbrev [5] 0x4f:0xb DW_TAG_formal_parameter
215	.byte	2                               # DW_AT_location
216	.byte	145
217	.byte	120
218	.byte	6                               # DW_AT_name
219	.byte	0                               # DW_AT_decl_file
220	.byte	4                               # DW_AT_decl_line
221	.long	37                              # DW_AT_type
222	.byte	0                               # End Of Children Mark
223	.byte	0                               # End Of Children Mark
224.Ldebug_info_dwo_end0:
225	.section	.debug_abbrev.dwo,"e",@progbits
226	.byte	1                               # Abbreviation Code
227	.byte	17                              # DW_TAG_compile_unit
228	.byte	1                               # DW_CHILDREN_yes
229	.byte	37                              # DW_AT_producer
230	.byte	37                              # DW_FORM_strx1
231	.byte	19                              # DW_AT_language
232	.byte	5                               # DW_FORM_data2
233	.byte	3                               # DW_AT_name
234	.byte	37                              # DW_FORM_strx1
235	.byte	118                             # DW_AT_dwo_name
236	.byte	37                              # DW_FORM_strx1
237	.byte	0                               # EOM(1)
238	.byte	0                               # EOM(2)
239	.byte	2                               # Abbreviation Code
240	.byte	52                              # DW_TAG_variable
241	.byte	0                               # DW_CHILDREN_no
242	.byte	3                               # DW_AT_name
243	.byte	37                              # DW_FORM_strx1
244	.byte	73                              # DW_AT_type
245	.byte	19                              # DW_FORM_ref4
246	.byte	63                              # DW_AT_external
247	.byte	25                              # DW_FORM_flag_present
248	.byte	58                              # DW_AT_decl_file
249	.byte	11                              # DW_FORM_data1
250	.byte	59                              # DW_AT_decl_line
251	.byte	11                              # DW_FORM_data1
252	.byte	2                               # DW_AT_location
253	.byte	24                              # DW_FORM_exprloc
254	.byte	0                               # EOM(1)
255	.byte	0                               # EOM(2)
256	.byte	3                               # Abbreviation Code
257	.byte	36                              # DW_TAG_base_type
258	.byte	0                               # DW_CHILDREN_no
259	.byte	3                               # DW_AT_name
260	.byte	37                              # DW_FORM_strx1
261	.byte	62                              # DW_AT_encoding
262	.byte	11                              # DW_FORM_data1
263	.byte	11                              # DW_AT_byte_size
264	.byte	11                              # DW_FORM_data1
265	.byte	0                               # EOM(1)
266	.byte	0                               # EOM(2)
267	.byte	4                               # Abbreviation Code
268	.byte	46                              # DW_TAG_subprogram
269	.byte	1                               # DW_CHILDREN_yes
270	.byte	17                              # DW_AT_low_pc
271	.byte	27                              # DW_FORM_addrx
272	.byte	18                              # DW_AT_high_pc
273	.byte	6                               # DW_FORM_data4
274	.byte	64                              # DW_AT_frame_base
275	.byte	24                              # DW_FORM_exprloc
276	.byte	110                             # DW_AT_linkage_name
277	.byte	37                              # DW_FORM_strx1
278	.byte	3                               # DW_AT_name
279	.byte	37                              # DW_FORM_strx1
280	.byte	58                              # DW_AT_decl_file
281	.byte	11                              # DW_FORM_data1
282	.byte	59                              # DW_AT_decl_line
283	.byte	11                              # DW_FORM_data1
284	.byte	73                              # DW_AT_type
285	.byte	19                              # DW_FORM_ref4
286	.byte	63                              # DW_AT_external
287	.byte	25                              # DW_FORM_flag_present
288	.byte	0                               # EOM(1)
289	.byte	0                               # EOM(2)
290	.byte	5                               # Abbreviation Code
291	.byte	5                               # DW_TAG_formal_parameter
292	.byte	0                               # DW_CHILDREN_no
293	.byte	2                               # DW_AT_location
294	.byte	24                              # DW_FORM_exprloc
295	.byte	3                               # DW_AT_name
296	.byte	37                              # DW_FORM_strx1
297	.byte	58                              # DW_AT_decl_file
298	.byte	11                              # DW_FORM_data1
299	.byte	59                              # DW_AT_decl_line
300	.byte	11                              # DW_FORM_data1
301	.byte	73                              # DW_AT_type
302	.byte	19                              # DW_FORM_ref4
303	.byte	0                               # EOM(1)
304	.byte	0                               # EOM(2)
305	.byte	0                               # EOM(3)
306	.section	.debug_addr,"",@progbits
307	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
308.Ldebug_addr_start0:
309	.short	5                               # DWARF version number
310	.byte	8                               # Address size
311	.byte	0                               # Segment selector size
312.Laddr_table_base0:
313	.quad	z
314	.quad	d
315	.quad	.Lfunc_begin0
316.Ldebug_addr_end0:
317	.section	.debug_gnu_pubnames,"",@progbits
318	.long	.LpubNames_end0-.LpubNames_start0 # Length of Public Names Info
319.LpubNames_start0:
320	.short	2                               # DWARF Version
321	.long	.Lcu_begin0                     # Offset of Compilation Unit Info
322	.long	40                              # Compilation Unit Length
323	.long	52                              # DIE offset
324	.byte	48                              # Attributes: FUNCTION, EXTERNAL
325	.asciz	"helper"                        # External Name
326	.long	41                              # DIE offset
327	.byte	32                              # Attributes: VARIABLE, EXTERNAL
328	.asciz	"d"                             # External Name
329	.long	26                              # DIE offset
330	.byte	32                              # Attributes: VARIABLE, EXTERNAL
331	.asciz	"z"                             # External Name
332	.long	0                               # End Mark
333.LpubNames_end0:
334	.section	.debug_gnu_pubtypes,"",@progbits
335	.long	.LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info
336.LpubTypes_start0:
337	.short	2                               # DWARF Version
338	.long	.Lcu_begin0                     # Offset of Compilation Unit Info
339	.long	40                              # Compilation Unit Length
340	.long	37                              # DIE offset
341	.byte	144                             # Attributes: TYPE, STATIC
342	.asciz	"int"                           # External Name
343	.long	0                               # End Mark
344.LpubTypes_end0:
345	.ident	"clang version 15.0.0"
346	.section	".note.GNU-stack","",@progbits
347	.section	.debug_line,"",@progbits
348.Lline_table_start0:
349