1 # clang++ -g -gdwarf-5 -emit-llvm -S main.cpp
2 # llc -O2 -mtriple=x86_64-unknown-linux-gnu main.ll
3 # void use(int * x, int * y) {
8 # int helper(int z_, int d_);
11 # int main(int argc, char *argv[]) {
15 # return helper(x, y);
20 .file 0 "." "main.cpp" md5 0x1f627913a0daee879e00a3a51726f0ef
21 .globl _Z3usePiS_ # -- Begin function _Z3usePiS_
23 .type _Z3usePiS_,@function
24 _Z3usePiS_
: # @_Z3usePiS_
26 .loc 0 1 0 # main.cpp:1:0
29 #DEBUG_VALUE: use:x <- $rdi
30 #DEBUG_VALUE: use:y <- $rsi
31 .loc 0 2 4 prologue_end # main.cpp:2:4
33 .loc 0 3 4 # main.cpp:3:4
35 .loc 0 4 1 # main.cpp:4:1
39 .size _Z3usePiS_, .Lfunc_end0-_Z3usePiS_
42 .globl main # -- Begin function main
47 .loc 0 9 0 # main.cpp:9:0
50 #DEBUG_VALUE: main:argc <- $edi
51 #DEBUG_VALUE: main:argv <- $rsi
52 # kill: def $edi killed $edi def $rdi
53 .loc 0 2 4 prologue_end # main.cpp:2:4
57 #DEBUG_VALUE: use:x <- undef
58 .loc 0 3 4 # main.cpp:3:4
61 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi
64 #DEBUG_VALUE: use:y <- undef
65 .loc 0 13 11 # main.cpp:13:11
68 #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $edi
69 jmp _Z6helperii
# TAILCALL
72 .size main, .Lfunc_end1-main
91 .section .debug_loclists.dwo,"e",@progbits
92 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
93 .Ldebug_list_header_start0:
95 .byte 8 # Address size
96 .byte 0 # Segment selector size
97 .long 2 # Offset entry count
98 .Lloclists_table_base0:
99 .long .Ldebug_loc0-.Lloclists_table_base0
100 .long .Ldebug_loc1-.Lloclists_table_base0
102 .byte 1 # DW_LLE_base_addressx
103 .byte 2 # base address index
104 .byte 4 # DW_LLE_offset_pair
105 .uleb128 .Lfunc_begin1-.Lfunc_begin0 # starting offset
106 .uleb128 .Ltmp4-.Lfunc_begin0 # ending offset
107 .byte 1 # Loc expr size
108 .byte 85 # super-register DW_OP_reg5
109 .byte 4 # DW_LLE_offset_pair
110 .uleb128 .Ltmp4-.Lfunc_begin0 # starting offset
111 .uleb128 .Lfunc_end1-.Lfunc_begin0 # ending offset
112 .byte 4 # Loc expr size
113 .byte 163 # DW_OP_entry_value
115 .byte 85 # super-register DW_OP_reg5
116 .byte 159 # DW_OP_stack_value
117 .byte 0 # DW_LLE_end_of_list
119 .byte 1 # DW_LLE_base_addressx
120 .byte 2 # base address index
121 .byte 4 # DW_LLE_offset_pair
122 .uleb128 .Lfunc_begin1-.Lfunc_begin0 # starting offset
123 .uleb128 .Ltmp2-.Lfunc_begin0 # ending offset
124 .byte 1 # Loc expr size
125 .byte 84 # DW_OP_reg4
126 .byte 4 # DW_LLE_offset_pair
127 .uleb128 .Ltmp2-.Lfunc_begin0 # starting offset
128 .uleb128 .Lfunc_end1-.Lfunc_begin0 # ending offset
129 .byte 4 # Loc expr size
130 .byte 163 # DW_OP_entry_value
132 .byte 84 # DW_OP_reg4
133 .byte 159 # DW_OP_stack_value
134 .byte 0 # DW_LLE_end_of_list
135 .Ldebug_list_header_end0:
136 .section .debug_abbrev,"",@progbits
137 .byte 1 # Abbreviation Code
138 .byte 74 # DW_TAG_skeleton_unit
139 .byte 0 # DW_CHILDREN_no
140 .byte 16 # DW_AT_stmt_list
141 .byte 23 # DW_FORM_sec_offset
142 .byte 114 # DW_AT_str_offsets_base
143 .byte 23 # DW_FORM_sec_offset
144 .byte 27 # DW_AT_comp_dir
145 .byte 37 # DW_FORM_strx1
146 .byte 118 # DW_AT_dwo_name
147 .byte 37 # DW_FORM_strx1
148 .byte 17 # DW_AT_low_pc
149 .byte 27 # DW_FORM_addrx
150 .byte 18 # DW_AT_high_pc
151 .byte 6 # DW_FORM_data4
152 .byte 115 # DW_AT_addr_base
153 .byte 23 # DW_FORM_sec_offset
157 .section .debug_info,"",@progbits
159 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
161 .short 5 # DWARF version number
162 .byte 4 # DWARF Unit Type
163 .byte 8 # Address Size (in bytes)
164 .long .debug_abbrev # Offset Into Abbrev. Section
165 .quad 4593992475441569756
166 .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit
167 .long .Lline_table_start0 # DW_AT_stmt_list
168 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base
169 .byte 0 # DW_AT_comp_dir
170 .byte 1 # DW_AT_dwo_name
171 .byte 2 # DW_AT_low_pc
172 .long .Lfunc_end1-.Lfunc_begin0 # DW_AT_high_pc
173 .long .Laddr_table_base0 # DW_AT_addr_base
175 .section .debug_str_offsets,"",@progbits
176 .long 12 # Length of String Offsets Set
180 .section .debug_str,"MS",@progbits,1
182 .asciz "." # string offset=0
184 .asciz "main.dwo" # string offset=2
185 .section .debug_str_offsets,"",@progbits
188 .section .debug_str_offsets.dwo,"e",@progbits
189 .long 60 # Length of String Offsets Set
192 .section .debug_str.dwo,"eMS",@progbits,1
194 .asciz "x" # string offset=0
196 .asciz "int" # string offset=2
198 .asciz "y" # string offset=6
200 .asciz "_Z3usePiS_" # string offset=8
202 .asciz "use" # string offset=19
204 .asciz "_Z6helperii" # string offset=23
206 .asciz "helper" # string offset=35
208 .asciz "main" # string offset=42
210 .asciz "argc" # string offset=47
212 .asciz "argv" # string offset=52
214 .asciz "char" # string offset=57
216 .asciz "clang version 15.0.0" # string offset=62
218 .asciz "main.cpp" # string offset=83
220 .asciz "main.dwo" # string offset=92
221 .section .debug_str_offsets.dwo,"e",@progbits
236 .section .debug_info.dwo,"e",@progbits
237 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
238 .Ldebug_info_dwo_start0:
239 .short 5 # DWARF version number
240 .byte 5 # DWARF Unit Type
241 .byte 8 # Address Size (in bytes)
242 .long 0 # Offset Into Abbrev. Section
243 .quad 4593992475441569756
244 .byte 1 # Abbrev [1] 0x14:0xae DW_TAG_compile_unit
245 .byte 11 # DW_AT_producer
246 .short 33 # DW_AT_language
247 .byte 12 # DW_AT_name
248 .byte 13 # DW_AT_dwo_name
249 .byte 2 # Abbrev [2] 0x1a:0xb DW_TAG_variable
251 .long 37 # DW_AT_type
253 .byte 0 # DW_AT_decl_file
254 .byte 7 # DW_AT_decl_line
255 .byte 2 # DW_AT_location
258 .byte 3 # Abbrev [3] 0x25:0x4 DW_TAG_base_type
260 .byte 5 # DW_AT_encoding
261 .byte 4 # DW_AT_byte_size
262 .byte 2 # Abbrev [2] 0x29:0xb DW_TAG_variable
264 .long 37 # DW_AT_type
266 .byte 0 # DW_AT_decl_file
267 .byte 8 # DW_AT_decl_line
268 .byte 2 # DW_AT_location
271 .byte 4 # Abbrev [4] 0x34:0x1b DW_TAG_subprogram
272 .byte 2 # DW_AT_low_pc
273 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
274 .byte 1 # DW_AT_frame_base
276 # DW_AT_call_all_calls
277 .long 79 # DW_AT_abstract_origin
278 .byte 5 # Abbrev [5] 0x40:0x7 DW_TAG_formal_parameter
279 .byte 1 # DW_AT_location
281 .long 84 # DW_AT_abstract_origin
282 .byte 5 # Abbrev [5] 0x47:0x7 DW_TAG_formal_parameter
283 .byte 1 # DW_AT_location
285 .long 92 # DW_AT_abstract_origin
286 .byte 0 # End Of Children Mark
287 .byte 6 # Abbrev [6] 0x4f:0x16 DW_TAG_subprogram
288 .byte 3 # DW_AT_linkage_name
290 .byte 0 # DW_AT_decl_file
291 .byte 1 # DW_AT_decl_line
294 .byte 7 # Abbrev [7] 0x54:0x8 DW_TAG_formal_parameter
296 .byte 0 # DW_AT_decl_file
297 .byte 1 # DW_AT_decl_line
298 .long 101 # DW_AT_type
299 .byte 7 # Abbrev [7] 0x5c:0x8 DW_TAG_formal_parameter
301 .byte 0 # DW_AT_decl_file
302 .byte 1 # DW_AT_decl_line
303 .long 101 # DW_AT_type
304 .byte 0 # End Of Children Mark
305 .byte 8 # Abbrev [8] 0x65:0x5 DW_TAG_pointer_type
306 .long 37 # DW_AT_type
307 .byte 9 # Abbrev [9] 0x6a:0x35 DW_TAG_subprogram
308 .byte 3 # DW_AT_low_pc
309 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
310 .byte 1 # DW_AT_frame_base
312 # DW_AT_call_all_calls
314 .byte 0 # DW_AT_decl_file
315 .byte 9 # DW_AT_decl_line
316 .long 37 # DW_AT_type
318 .byte 10 # Abbrev [10] 0x79:0x9 DW_TAG_formal_parameter
319 .byte 0 # DW_AT_location
321 .byte 0 # DW_AT_decl_file
322 .byte 9 # DW_AT_decl_line
323 .long 37 # DW_AT_type
324 .byte 10 # Abbrev [10] 0x82:0x9 DW_TAG_formal_parameter
325 .byte 1 # DW_AT_location
327 .byte 0 # DW_AT_decl_file
328 .byte 9 # DW_AT_decl_line
329 .long 179 # DW_AT_type
330 .byte 11 # Abbrev [11] 0x8b:0xd DW_TAG_inlined_subroutine
331 .long 79 # DW_AT_abstract_origin
332 .byte 3 # DW_AT_low_pc
333 .long .Ltmp3-.Lfunc_begin1 # DW_AT_high_pc
334 .byte 0 # DW_AT_call_file
335 .byte 12 # DW_AT_call_line
336 .byte 4 # DW_AT_call_column
337 .byte 12 # Abbrev [12] 0x98:0x6 DW_TAG_call_site
338 .long 159 # DW_AT_call_origin
339 # DW_AT_call_tail_call
340 .byte 4 # DW_AT_call_pc
341 .byte 0 # End Of Children Mark
342 .byte 13 # Abbrev [13] 0x9f:0x14 DW_TAG_subprogram
343 .byte 5 # DW_AT_linkage_name
345 .byte 0 # DW_AT_decl_file
346 .byte 6 # DW_AT_decl_line
347 .long 37 # DW_AT_type
350 .byte 14 # Abbrev [14] 0xa8:0x5 DW_TAG_formal_parameter
351 .long 37 # DW_AT_type
352 .byte 14 # Abbrev [14] 0xad:0x5 DW_TAG_formal_parameter
353 .long 37 # DW_AT_type
354 .byte 0 # End Of Children Mark
355 .byte 8 # Abbrev [8] 0xb3:0x5 DW_TAG_pointer_type
356 .long 184 # DW_AT_type
357 .byte 8 # Abbrev [8] 0xb8:0x5 DW_TAG_pointer_type
358 .long 189 # DW_AT_type
359 .byte 3 # Abbrev [3] 0xbd:0x4 DW_TAG_base_type
360 .byte 10 # DW_AT_name
361 .byte 6 # DW_AT_encoding
362 .byte 1 # DW_AT_byte_size
363 .byte 0 # End Of Children Mark
364 .Ldebug_info_dwo_end0:
365 .section .debug_abbrev.dwo,"e",@progbits
366 .byte 1 # Abbreviation Code
367 .byte 17 # DW_TAG_compile_unit
368 .byte 1 # DW_CHILDREN_yes
369 .byte 37 # DW_AT_producer
370 .byte 37 # DW_FORM_strx1
371 .byte 19 # DW_AT_language
372 .byte 5 # DW_FORM_data2
374 .byte 37 # DW_FORM_strx1
375 .byte 118 # DW_AT_dwo_name
376 .byte 37 # DW_FORM_strx1
379 .byte 2 # Abbreviation Code
380 .byte 52 # DW_TAG_variable
381 .byte 0 # DW_CHILDREN_no
383 .byte 37 # DW_FORM_strx1
384 .byte 73 # DW_AT_type
385 .byte 19 # DW_FORM_ref4
386 .byte 63 # DW_AT_external
387 .byte 25 # DW_FORM_flag_present
388 .byte 58 # DW_AT_decl_file
389 .byte 11 # DW_FORM_data1
390 .byte 59 # DW_AT_decl_line
391 .byte 11 # DW_FORM_data1
392 .byte 2 # DW_AT_location
393 .byte 24 # DW_FORM_exprloc
396 .byte 3 # Abbreviation Code
397 .byte 36 # DW_TAG_base_type
398 .byte 0 # DW_CHILDREN_no
400 .byte 37 # DW_FORM_strx1
401 .byte 62 # DW_AT_encoding
402 .byte 11 # DW_FORM_data1
403 .byte 11 # DW_AT_byte_size
404 .byte 11 # DW_FORM_data1
407 .byte 4 # Abbreviation Code
408 .byte 46 # DW_TAG_subprogram
409 .byte 1 # DW_CHILDREN_yes
410 .byte 17 # DW_AT_low_pc
411 .byte 27 # DW_FORM_addrx
412 .byte 18 # DW_AT_high_pc
413 .byte 6 # DW_FORM_data4
414 .byte 64 # DW_AT_frame_base
415 .byte 24 # DW_FORM_exprloc
416 .byte 122 # DW_AT_call_all_calls
417 .byte 25 # DW_FORM_flag_present
418 .byte 49 # DW_AT_abstract_origin
419 .byte 19 # DW_FORM_ref4
422 .byte 5 # Abbreviation Code
423 .byte 5 # DW_TAG_formal_parameter
424 .byte 0 # DW_CHILDREN_no
425 .byte 2 # DW_AT_location
426 .byte 24 # DW_FORM_exprloc
427 .byte 49 # DW_AT_abstract_origin
428 .byte 19 # DW_FORM_ref4
431 .byte 6 # Abbreviation Code
432 .byte 46 # DW_TAG_subprogram
433 .byte 1 # DW_CHILDREN_yes
434 .byte 110 # DW_AT_linkage_name
435 .byte 37 # DW_FORM_strx1
437 .byte 37 # DW_FORM_strx1
438 .byte 58 # DW_AT_decl_file
439 .byte 11 # DW_FORM_data1
440 .byte 59 # DW_AT_decl_line
441 .byte 11 # DW_FORM_data1
442 .byte 63 # DW_AT_external
443 .byte 25 # DW_FORM_flag_present
444 .byte 32 # DW_AT_inline
445 .byte 33 # DW_FORM_implicit_const
449 .byte 7 # Abbreviation Code
450 .byte 5 # DW_TAG_formal_parameter
451 .byte 0 # DW_CHILDREN_no
453 .byte 37 # DW_FORM_strx1
454 .byte 58 # DW_AT_decl_file
455 .byte 11 # DW_FORM_data1
456 .byte 59 # DW_AT_decl_line
457 .byte 11 # DW_FORM_data1
458 .byte 73 # DW_AT_type
459 .byte 19 # DW_FORM_ref4
462 .byte 8 # Abbreviation Code
463 .byte 15 # DW_TAG_pointer_type
464 .byte 0 # DW_CHILDREN_no
465 .byte 73 # DW_AT_type
466 .byte 19 # DW_FORM_ref4
469 .byte 9 # Abbreviation Code
470 .byte 46 # DW_TAG_subprogram
471 .byte 1 # DW_CHILDREN_yes
472 .byte 17 # DW_AT_low_pc
473 .byte 27 # DW_FORM_addrx
474 .byte 18 # DW_AT_high_pc
475 .byte 6 # DW_FORM_data4
476 .byte 64 # DW_AT_frame_base
477 .byte 24 # DW_FORM_exprloc
478 .byte 122 # DW_AT_call_all_calls
479 .byte 25 # DW_FORM_flag_present
481 .byte 37 # DW_FORM_strx1
482 .byte 58 # DW_AT_decl_file
483 .byte 11 # DW_FORM_data1
484 .byte 59 # DW_AT_decl_line
485 .byte 11 # DW_FORM_data1
486 .byte 73 # DW_AT_type
487 .byte 19 # DW_FORM_ref4
488 .byte 63 # DW_AT_external
489 .byte 25 # DW_FORM_flag_present
492 .byte 10 # Abbreviation Code
493 .byte 5 # DW_TAG_formal_parameter
494 .byte 0 # DW_CHILDREN_no
495 .byte 2 # DW_AT_location
496 .byte 34 # DW_FORM_loclistx
498 .byte 37 # DW_FORM_strx1
499 .byte 58 # DW_AT_decl_file
500 .byte 11 # DW_FORM_data1
501 .byte 59 # DW_AT_decl_line
502 .byte 11 # DW_FORM_data1
503 .byte 73 # DW_AT_type
504 .byte 19 # DW_FORM_ref4
507 .byte 11 # Abbreviation Code
508 .byte 29 # DW_TAG_inlined_subroutine
509 .byte 0 # DW_CHILDREN_no
510 .byte 49 # DW_AT_abstract_origin
511 .byte 19 # DW_FORM_ref4
512 .byte 17 # DW_AT_low_pc
513 .byte 27 # DW_FORM_addrx
514 .byte 18 # DW_AT_high_pc
515 .byte 6 # DW_FORM_data4
516 .byte 88 # DW_AT_call_file
517 .byte 11 # DW_FORM_data1
518 .byte 89 # DW_AT_call_line
519 .byte 11 # DW_FORM_data1
520 .byte 87 # DW_AT_call_column
521 .byte 11 # DW_FORM_data1
524 .byte 12 # Abbreviation Code
525 .byte 72 # DW_TAG_call_site
526 .byte 0 # DW_CHILDREN_no
527 .byte 127 # DW_AT_call_origin
528 .byte 19 # DW_FORM_ref4
529 .ascii "\202\001" # DW_AT_call_tail_call
530 .byte 25 # DW_FORM_flag_present
531 .ascii "\201\001" # DW_AT_call_pc
532 .byte 27 # DW_FORM_addrx
535 .byte 13 # Abbreviation Code
536 .byte 46 # DW_TAG_subprogram
537 .byte 1 # DW_CHILDREN_yes
538 .byte 110 # DW_AT_linkage_name
539 .byte 37 # DW_FORM_strx1
541 .byte 37 # DW_FORM_strx1
542 .byte 58 # DW_AT_decl_file
543 .byte 11 # DW_FORM_data1
544 .byte 59 # DW_AT_decl_line
545 .byte 11 # DW_FORM_data1
546 .byte 73 # DW_AT_type
547 .byte 19 # DW_FORM_ref4
548 .byte 60 # DW_AT_declaration
549 .byte 25 # DW_FORM_flag_present
550 .byte 63 # DW_AT_external
551 .byte 25 # DW_FORM_flag_present
554 .byte 14 # Abbreviation Code
555 .byte 5 # DW_TAG_formal_parameter
556 .byte 0 # DW_CHILDREN_no
557 .byte 73 # DW_AT_type
558 .byte 19 # DW_FORM_ref4
562 .section .debug_addr,"",@progbits
563 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
565 .short 5 # DWARF version number
566 .byte 8 # Address size
567 .byte 0 # Segment selector size
575 .ident "clang version 15.0.0"
576 .section ".note.GNU-stack","",@progbits
577 .section .debug_line,"",@progbits