xref: /llvm-project/bolt/test/X86/Inputs/dwarf4-df-call-site-change-low-pc-main.s (revision 55a1d959a5e97abf946a1bb8a7217a5790a8ff3e)
1# clang++ -O2 -g -gdwarf-4 -gsplit-dwarf
2# void use(int * x, int * y) {
3#  *x += 4;
4#  *y -= 2;
5# }
6#
7# int helper(int z_, int d_);
8# int x = 0;
9# int y = 1;
10# int  main(int argc, char *argv[]) {
11#    x = argc;
12#    y = argc + 3;
13#    //use(&x, &y);
14#    return helper(x, y);
15# }
16
17	.text
18	.file	"main.cpp"
19	.file	1 "." "main.cpp"
20	.globl	_Z3usePiS_                      # -- Begin function _Z3usePiS_
21	.p2align	4, 0x90
22	.type	_Z3usePiS_,@function
23_Z3usePiS_:                             # @_Z3usePiS_
24.Lfunc_begin0:
25	.cfi_startproc
26# %bb.0:                                # %entry
27	#DEBUG_VALUE: use:x <- $rdi
28	#DEBUG_VALUE: use:y <- $rsi
29	.loc	1 2 5 prologue_end              # main.cpp:2:5
30	addl	$4, (%rdi)
31	.loc	1 3 5                           # main.cpp:3:5
32	addl	$-2, (%rsi)
33	.loc	1 4 1                           # main.cpp:4:1
34	retq
35.Ltmp0:
36.Lfunc_end0:
37	.size	_Z3usePiS_, .Lfunc_end0-_Z3usePiS_
38	.cfi_endproc
39                                        # -- End function
40	.globl	main                            # -- Begin function main
41	.p2align	4, 0x90
42	.type	main,@function
43main:                                   # @main
44.Lfunc_begin1:
45	.cfi_startproc
46# %bb.0:                                # %entry
47	#DEBUG_VALUE: main:argc <- $edi
48	#DEBUG_VALUE: main:argv <- $rsi
49                                        # kill: def $edi killed $edi def $rdi
50	.loc	1 10 6 prologue_end             # main.cpp:10:6
51	movl	%edi, x(%rip)
52	.loc	1 11 13                         # main.cpp:11:13
53	leal	3(%rdi), %esi
54.Ltmp1:
55	#DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi
56	.loc	1 11 6 is_stmt 0                # main.cpp:11:6
57	movl	%esi, y(%rip)
58                                        # kill: def $edi killed $edi killed $rdi
59.Ltmp2:
60	.loc	1 13 11 is_stmt 1               # main.cpp:13:11
61	jmp	_Z6helperii@PLT                 # TAILCALL
62.Ltmp3:
63.Lfunc_end1:
64	.size	main, .Lfunc_end1-main
65	.cfi_endproc
66                                        # -- End function
67	.type	x,@object                       # @x
68	.bss
69	.globl	x
70	.p2align	2, 0x0
71x:
72	.long	0                               # 0x0
73	.size	x, 4
74
75	.type	y,@object                       # @y
76	.data
77	.globl	y
78	.p2align	2, 0x0
79y:
80	.long	1                               # 0x1
81	.size	y, 4
82
83	.section	.debug_loc.dwo,"e",@progbits
84.Ldebug_loc0:
85	.byte	3
86	.byte	3
87	.long	.Ltmp1-.Lfunc_begin1
88	.short	1                               # Loc expr size
89	.byte	84                              # DW_OP_reg4
90	.byte	3
91	.byte	5
92	.long	.Lfunc_end1-.Ltmp1
93	.short	4                               # Loc expr size
94	.byte	243                             # DW_OP_GNU_entry_value
95	.byte	1                               # 1
96	.byte	84                              # DW_OP_reg4
97	.byte	159                             # DW_OP_stack_value
98	.byte	0
99	.section	.debug_abbrev,"",@progbits
100	.byte	1                               # Abbreviation Code
101	.byte	17                              # DW_TAG_compile_unit
102	.byte	0                               # DW_CHILDREN_no
103	.byte	16                              # DW_AT_stmt_list
104	.byte	23                              # DW_FORM_sec_offset
105	.byte	27                              # DW_AT_comp_dir
106	.byte	14                              # DW_FORM_strp
107	.ascii	"\264B"                         # DW_AT_GNU_pubnames
108	.byte	25                              # DW_FORM_flag_present
109	.ascii	"\260B"                         # DW_AT_GNU_dwo_name
110	.byte	14                              # DW_FORM_strp
111	.ascii	"\261B"                         # DW_AT_GNU_dwo_id
112	.byte	7                               # DW_FORM_data8
113	.byte	17                              # DW_AT_low_pc
114	.byte	1                               # DW_FORM_addr
115	.byte	18                              # DW_AT_high_pc
116	.byte	6                               # DW_FORM_data4
117	.ascii	"\263B"                         # DW_AT_GNU_addr_base
118	.byte	23                              # DW_FORM_sec_offset
119	.byte	0                               # EOM(1)
120	.byte	0                               # EOM(2)
121	.byte	0                               # EOM(3)
122	.section	.debug_info,"",@progbits
123.Lcu_begin0:
124	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
125.Ldebug_info_start0:
126	.short	4                               # DWARF version number
127	.long	.debug_abbrev                   # Offset Into Abbrev. Section
128	.byte	8                               # Address Size (in bytes)
129	.byte	1                               # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit
130	.long	.Lline_table_start0             # DW_AT_stmt_list
131	.long	.Lskel_string0                  # DW_AT_comp_dir
132                                        # DW_AT_GNU_pubnames
133	.long	.Lskel_string1                  # DW_AT_GNU_dwo_name
134	.quad	-3308548803209949056            # DW_AT_GNU_dwo_id
135	.quad	.Lfunc_begin0                   # DW_AT_low_pc
136	.long	.Lfunc_end1-.Lfunc_begin0       # DW_AT_high_pc
137	.long	.Laddr_table_base0              # DW_AT_GNU_addr_base
138.Ldebug_info_end0:
139	.section	.debug_str,"MS",@progbits,1
140.Lskel_string0:
141	.asciz	"." # string offset=0
142.Lskel_string1:
143	.asciz	"main.dwo"                      # string offset=47
144	.section	.debug_str.dwo,"eMS",@progbits,1
145.Linfo_string0:
146	.asciz	"x"                             # string offset=0
147.Linfo_string1:
148	.asciz	"int"                           # string offset=2
149.Linfo_string2:
150	.asciz	"y"                             # string offset=6
151.Linfo_string3:
152	.asciz	"_Z6helperii"                   # string offset=8
153.Linfo_string4:
154	.asciz	"helper"                        # string offset=20
155.Linfo_string5:
156	.asciz	"_Z3usePiS_"                    # string offset=27
157.Linfo_string6:
158	.asciz	"use"                           # string offset=38
159.Linfo_string7:
160	.asciz	"main"                          # string offset=42
161.Linfo_string8:
162	.asciz	"argc"                          # string offset=47
163.Linfo_string9:
164	.asciz	"argv"                          # string offset=52
165.Linfo_string10:
166	.asciz	"char"                          # string offset=57
167.Linfo_string11:
168	.asciz	"clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)" # string offset=62
169.Linfo_string12:
170	.asciz	"main.cpp"                      # string offset=163
171.Linfo_string13:
172	.asciz	"main.dwo"                      # string offset=172
173	.section	.debug_str_offsets.dwo,"e",@progbits
174	.long	0
175	.long	2
176	.long	6
177	.long	8
178	.long	20
179	.long	27
180	.long	38
181	.long	42
182	.long	47
183	.long	52
184	.long	57
185	.long	62
186	.long	163
187	.long	172
188	.section	.debug_info.dwo,"e",@progbits
189	.long	.Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
190.Ldebug_info_dwo_start0:
191	.short	4                               # DWARF version number
192	.long	0                               # Offset Into Abbrev. Section
193	.byte	8                               # Address Size (in bytes)
194	.byte	1                               # Abbrev [1] 0xb:0x9d DW_TAG_compile_unit
195	.byte	11                              # DW_AT_producer
196	.short	33                              # DW_AT_language
197	.byte	12                              # DW_AT_name
198	.byte	13                              # DW_AT_GNU_dwo_name
199	.quad	-3308548803209949056            # DW_AT_GNU_dwo_id
200	.byte	2                               # Abbrev [2] 0x19:0xb DW_TAG_variable
201	.byte	0                               # DW_AT_name
202	.long	36                              # DW_AT_type
203                                        # DW_AT_external
204	.byte	1                               # DW_AT_decl_file
205	.byte	7                               # DW_AT_decl_line
206	.byte	2                               # DW_AT_location
207	.byte	251
208	.byte	0
209	.byte	3                               # Abbrev [3] 0x24:0x4 DW_TAG_base_type
210	.byte	1                               # DW_AT_name
211	.byte	5                               # DW_AT_encoding
212	.byte	4                               # DW_AT_byte_size
213	.byte	2                               # Abbrev [2] 0x28:0xb DW_TAG_variable
214	.byte	2                               # DW_AT_name
215	.long	36                              # DW_AT_type
216                                        # DW_AT_external
217	.byte	1                               # DW_AT_decl_file
218	.byte	8                               # DW_AT_decl_line
219	.byte	2                               # DW_AT_location
220	.byte	251
221	.byte	1
222	.byte	4                               # Abbrev [4] 0x33:0x21 DW_TAG_subprogram
223	.byte	2                               # DW_AT_low_pc
224	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
225	.byte	1                               # DW_AT_frame_base
226	.byte	87
227                                        # DW_AT_GNU_all_call_sites
228	.byte	5                               # DW_AT_linkage_name
229	.byte	6                               # DW_AT_name
230	.byte	1                               # DW_AT_decl_file
231	.byte	1                               # DW_AT_decl_line
232                                        # DW_AT_external
233	.byte	5                               # Abbrev [5] 0x3f:0xa DW_TAG_formal_parameter
234	.byte	1                               # DW_AT_location
235	.byte	85
236	.byte	0                               # DW_AT_name
237	.byte	1                               # DW_AT_decl_file
238	.byte	1                               # DW_AT_decl_line
239	.long	148                             # DW_AT_type
240	.byte	5                               # Abbrev [5] 0x49:0xa DW_TAG_formal_parameter
241	.byte	1                               # DW_AT_location
242	.byte	84
243	.byte	2                               # DW_AT_name
244	.byte	1                               # DW_AT_decl_file
245	.byte	1                               # DW_AT_decl_line
246	.long	148                             # DW_AT_type
247	.byte	0                               # End Of Children Mark
248	.byte	6                               # Abbrev [6] 0x54:0x2c DW_TAG_subprogram
249	.byte	3                               # DW_AT_low_pc
250	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
251	.byte	1                               # DW_AT_frame_base
252	.byte	87
253                                        # DW_AT_GNU_all_call_sites
254	.byte	7                               # DW_AT_name
255	.byte	1                               # DW_AT_decl_file
256	.byte	9                               # DW_AT_decl_line
257	.long	36                              # DW_AT_type
258                                        # DW_AT_external
259	.byte	5                               # Abbrev [5] 0x63:0xa DW_TAG_formal_parameter
260	.byte	1                               # DW_AT_location
261	.byte	85
262	.byte	8                               # DW_AT_name
263	.byte	1                               # DW_AT_decl_file
264	.byte	9                               # DW_AT_decl_line
265	.long	36                              # DW_AT_type
266	.byte	7                               # Abbrev [7] 0x6d:0xc DW_TAG_formal_parameter
267	.long	.Ldebug_loc0-.debug_loc.dwo     # DW_AT_location
268	.byte	9                               # DW_AT_name
269	.byte	1                               # DW_AT_decl_file
270	.byte	9                               # DW_AT_decl_line
271	.long	153                             # DW_AT_type
272	.byte	8                               # Abbrev [8] 0x79:0x6 DW_TAG_GNU_call_site
273	.long	128                             # DW_AT_abstract_origin
274                                        # DW_AT_GNU_tail_call
275	.byte	4                               # DW_AT_low_pc
276	.byte	0                               # End Of Children Mark
277	.byte	9                               # Abbrev [9] 0x80:0x14 DW_TAG_subprogram
278	.byte	3                               # DW_AT_linkage_name
279	.byte	4                               # DW_AT_name
280	.byte	1                               # DW_AT_decl_file
281	.byte	6                               # DW_AT_decl_line
282	.long	36                              # DW_AT_type
283                                        # DW_AT_declaration
284                                        # DW_AT_external
285	.byte	10                              # Abbrev [10] 0x89:0x5 DW_TAG_formal_parameter
286	.long	36                              # DW_AT_type
287	.byte	10                              # Abbrev [10] 0x8e:0x5 DW_TAG_formal_parameter
288	.long	36                              # DW_AT_type
289	.byte	0                               # End Of Children Mark
290	.byte	11                              # Abbrev [11] 0x94:0x5 DW_TAG_pointer_type
291	.long	36                              # DW_AT_type
292	.byte	11                              # Abbrev [11] 0x99:0x5 DW_TAG_pointer_type
293	.long	158                             # DW_AT_type
294	.byte	11                              # Abbrev [11] 0x9e:0x5 DW_TAG_pointer_type
295	.long	163                             # DW_AT_type
296	.byte	3                               # Abbrev [3] 0xa3:0x4 DW_TAG_base_type
297	.byte	10                              # DW_AT_name
298	.byte	6                               # DW_AT_encoding
299	.byte	1                               # DW_AT_byte_size
300	.byte	0                               # End Of Children Mark
301.Ldebug_info_dwo_end0:
302	.section	.debug_abbrev.dwo,"e",@progbits
303	.byte	1                               # Abbreviation Code
304	.byte	17                              # DW_TAG_compile_unit
305	.byte	1                               # DW_CHILDREN_yes
306	.byte	37                              # DW_AT_producer
307	.ascii	"\202>"                         # DW_FORM_GNU_str_index
308	.byte	19                              # DW_AT_language
309	.byte	5                               # DW_FORM_data2
310	.byte	3                               # DW_AT_name
311	.ascii	"\202>"                         # DW_FORM_GNU_str_index
312	.ascii	"\260B"                         # DW_AT_GNU_dwo_name
313	.ascii	"\202>"                         # DW_FORM_GNU_str_index
314	.ascii	"\261B"                         # DW_AT_GNU_dwo_id
315	.byte	7                               # DW_FORM_data8
316	.byte	0                               # EOM(1)
317	.byte	0                               # EOM(2)
318	.byte	2                               # Abbreviation Code
319	.byte	52                              # DW_TAG_variable
320	.byte	0                               # DW_CHILDREN_no
321	.byte	3                               # DW_AT_name
322	.ascii	"\202>"                         # DW_FORM_GNU_str_index
323	.byte	73                              # DW_AT_type
324	.byte	19                              # DW_FORM_ref4
325	.byte	63                              # DW_AT_external
326	.byte	25                              # DW_FORM_flag_present
327	.byte	58                              # DW_AT_decl_file
328	.byte	11                              # DW_FORM_data1
329	.byte	59                              # DW_AT_decl_line
330	.byte	11                              # DW_FORM_data1
331	.byte	2                               # DW_AT_location
332	.byte	24                              # DW_FORM_exprloc
333	.byte	0                               # EOM(1)
334	.byte	0                               # EOM(2)
335	.byte	3                               # Abbreviation Code
336	.byte	36                              # DW_TAG_base_type
337	.byte	0                               # DW_CHILDREN_no
338	.byte	3                               # DW_AT_name
339	.ascii	"\202>"                         # DW_FORM_GNU_str_index
340	.byte	62                              # DW_AT_encoding
341	.byte	11                              # DW_FORM_data1
342	.byte	11                              # DW_AT_byte_size
343	.byte	11                              # DW_FORM_data1
344	.byte	0                               # EOM(1)
345	.byte	0                               # EOM(2)
346	.byte	4                               # Abbreviation Code
347	.byte	46                              # DW_TAG_subprogram
348	.byte	1                               # DW_CHILDREN_yes
349	.byte	17                              # DW_AT_low_pc
350	.ascii	"\201>"                         # DW_FORM_GNU_addr_index
351	.byte	18                              # DW_AT_high_pc
352	.byte	6                               # DW_FORM_data4
353	.byte	64                              # DW_AT_frame_base
354	.byte	24                              # DW_FORM_exprloc
355	.ascii	"\227B"                         # DW_AT_GNU_all_call_sites
356	.byte	25                              # DW_FORM_flag_present
357	.byte	110                             # DW_AT_linkage_name
358	.ascii	"\202>"                         # DW_FORM_GNU_str_index
359	.byte	3                               # DW_AT_name
360	.ascii	"\202>"                         # DW_FORM_GNU_str_index
361	.byte	58                              # DW_AT_decl_file
362	.byte	11                              # DW_FORM_data1
363	.byte	59                              # DW_AT_decl_line
364	.byte	11                              # DW_FORM_data1
365	.byte	63                              # DW_AT_external
366	.byte	25                              # DW_FORM_flag_present
367	.byte	0                               # EOM(1)
368	.byte	0                               # EOM(2)
369	.byte	5                               # Abbreviation Code
370	.byte	5                               # DW_TAG_formal_parameter
371	.byte	0                               # DW_CHILDREN_no
372	.byte	2                               # DW_AT_location
373	.byte	24                              # DW_FORM_exprloc
374	.byte	3                               # DW_AT_name
375	.ascii	"\202>"                         # DW_FORM_GNU_str_index
376	.byte	58                              # DW_AT_decl_file
377	.byte	11                              # DW_FORM_data1
378	.byte	59                              # DW_AT_decl_line
379	.byte	11                              # DW_FORM_data1
380	.byte	73                              # DW_AT_type
381	.byte	19                              # DW_FORM_ref4
382	.byte	0                               # EOM(1)
383	.byte	0                               # EOM(2)
384	.byte	6                               # Abbreviation Code
385	.byte	46                              # DW_TAG_subprogram
386	.byte	1                               # DW_CHILDREN_yes
387	.byte	17                              # DW_AT_low_pc
388	.ascii	"\201>"                         # DW_FORM_GNU_addr_index
389	.byte	18                              # DW_AT_high_pc
390	.byte	6                               # DW_FORM_data4
391	.byte	64                              # DW_AT_frame_base
392	.byte	24                              # DW_FORM_exprloc
393	.ascii	"\227B"                         # DW_AT_GNU_all_call_sites
394	.byte	25                              # DW_FORM_flag_present
395	.byte	3                               # DW_AT_name
396	.ascii	"\202>"                         # DW_FORM_GNU_str_index
397	.byte	58                              # DW_AT_decl_file
398	.byte	11                              # DW_FORM_data1
399	.byte	59                              # DW_AT_decl_line
400	.byte	11                              # DW_FORM_data1
401	.byte	73                              # DW_AT_type
402	.byte	19                              # DW_FORM_ref4
403	.byte	63                              # DW_AT_external
404	.byte	25                              # DW_FORM_flag_present
405	.byte	0                               # EOM(1)
406	.byte	0                               # EOM(2)
407	.byte	7                               # Abbreviation Code
408	.byte	5                               # DW_TAG_formal_parameter
409	.byte	0                               # DW_CHILDREN_no
410	.byte	2                               # DW_AT_location
411	.byte	23                              # DW_FORM_sec_offset
412	.byte	3                               # DW_AT_name
413	.ascii	"\202>"                         # DW_FORM_GNU_str_index
414	.byte	58                              # DW_AT_decl_file
415	.byte	11                              # DW_FORM_data1
416	.byte	59                              # DW_AT_decl_line
417	.byte	11                              # DW_FORM_data1
418	.byte	73                              # DW_AT_type
419	.byte	19                              # DW_FORM_ref4
420	.byte	0                               # EOM(1)
421	.byte	0                               # EOM(2)
422	.byte	8                               # Abbreviation Code
423	.ascii	"\211\202\001"                  # DW_TAG_GNU_call_site
424	.byte	0                               # DW_CHILDREN_no
425	.byte	49                              # DW_AT_abstract_origin
426	.byte	19                              # DW_FORM_ref4
427	.ascii	"\225B"                         # DW_AT_GNU_tail_call
428	.byte	25                              # DW_FORM_flag_present
429	.byte	17                              # DW_AT_low_pc
430	.ascii	"\201>"                         # DW_FORM_GNU_addr_index
431	.byte	0                               # EOM(1)
432	.byte	0                               # EOM(2)
433	.byte	9                               # Abbreviation Code
434	.byte	46                              # DW_TAG_subprogram
435	.byte	1                               # DW_CHILDREN_yes
436	.byte	110                             # DW_AT_linkage_name
437	.ascii	"\202>"                         # DW_FORM_GNU_str_index
438	.byte	3                               # DW_AT_name
439	.ascii	"\202>"                         # DW_FORM_GNU_str_index
440	.byte	58                              # DW_AT_decl_file
441	.byte	11                              # DW_FORM_data1
442	.byte	59                              # DW_AT_decl_line
443	.byte	11                              # DW_FORM_data1
444	.byte	73                              # DW_AT_type
445	.byte	19                              # DW_FORM_ref4
446	.byte	60                              # DW_AT_declaration
447	.byte	25                              # DW_FORM_flag_present
448	.byte	63                              # DW_AT_external
449	.byte	25                              # DW_FORM_flag_present
450	.byte	0                               # EOM(1)
451	.byte	0                               # EOM(2)
452	.byte	10                              # Abbreviation Code
453	.byte	5                               # DW_TAG_formal_parameter
454	.byte	0                               # DW_CHILDREN_no
455	.byte	73                              # DW_AT_type
456	.byte	19                              # DW_FORM_ref4
457	.byte	0                               # EOM(1)
458	.byte	0                               # EOM(2)
459	.byte	11                              # Abbreviation Code
460	.byte	15                              # DW_TAG_pointer_type
461	.byte	0                               # DW_CHILDREN_no
462	.byte	73                              # DW_AT_type
463	.byte	19                              # DW_FORM_ref4
464	.byte	0                               # EOM(1)
465	.byte	0                               # EOM(2)
466	.byte	0                               # EOM(3)
467	.section	.debug_addr,"",@progbits
468.Laddr_table_base0:
469	.quad	x
470	.quad	y
471	.quad	.Lfunc_begin0
472	.quad	.Lfunc_begin1
473	.quad	.Ltmp3
474	.quad	.Ltmp1
475	.section	.debug_gnu_pubnames,"",@progbits
476	.long	.LpubNames_end0-.LpubNames_start0 # Length of Public Names Info
477.LpubNames_start0:
478	.short	2                               # DWARF Version
479	.long	.Lcu_begin0                     # Offset of Compilation Unit Info
480	.long	48                              # Compilation Unit Length
481	.long	25                              # DIE offset
482	.byte	32                              # Attributes: VARIABLE, EXTERNAL
483	.asciz	"x"                             # External Name
484	.long	40                              # DIE offset
485	.byte	32                              # Attributes: VARIABLE, EXTERNAL
486	.asciz	"y"                             # External Name
487	.long	51                              # DIE offset
488	.byte	48                              # Attributes: FUNCTION, EXTERNAL
489	.asciz	"use"                           # External Name
490	.long	84                              # DIE offset
491	.byte	48                              # Attributes: FUNCTION, EXTERNAL
492	.asciz	"main"                          # External Name
493	.long	0                               # End Mark
494.LpubNames_end0:
495	.section	.debug_gnu_pubtypes,"",@progbits
496	.long	.LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info
497.LpubTypes_start0:
498	.short	2                               # DWARF Version
499	.long	.Lcu_begin0                     # Offset of Compilation Unit Info
500	.long	48                              # Compilation Unit Length
501	.long	36                              # DIE offset
502	.byte	144                             # Attributes: TYPE, STATIC
503	.asciz	"int"                           # External Name
504	.long	163                             # DIE offset
505	.byte	144                             # Attributes: TYPE, STATIC
506	.asciz	"char"                          # External Name
507	.long	0                               # End Mark
508.LpubTypes_end0:
509	.ident	"clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)"
510	.section	".note.GNU-stack","",@progbits
511	.addrsig
512	.section	.debug_line,"",@progbits
513.Lline_table_start0:
514