462 lines · plain
1/* Original C (for context):2* #include <stdio.h>3* 4* int main(int argc, char **argv) {5* for (int i = 1; i < argc; ++i)6* puts(argv[i]);7* return 0;8* }9*/10 .file "d_original_example.c"11 .text12 .globl main # -- Begin function main13 .p2align 414 .type main,@function15main: # @main16.Lfunc_begin0:17 .file 0 "." "d_original_example.c" md5 0x25192a1d5a6018cf37d369f9004fab0018 .cfi_startproc19# %bb.0: # %entry20 #DEBUG_VALUE: main:argc <- $edi21 #DEBUG_VALUE: main:argv <- $rsi22 #DEBUG_VALUE: i <- 123 .loc 0 4 21 prologue_end # d_original_example.c:4:2124 cmpl $2, %edi25.Ltmp0:26 .loc 0 4 3 is_stmt 0 # d_original_example.c:4:327 jl .LBB0_428.Ltmp1:29# %bb.1: # %for.body.preheader30 #DEBUG_VALUE: main:argc <- $edi31 #DEBUG_VALUE: main:argv <- $rsi32 #DEBUG_VALUE: i <- 133 pushq %rbp34 .cfi_def_cfa_offset 1635 .cfi_offset %rbp, -1636 movq %rsp, %rbp37 .cfi_def_cfa_register %rbp38 pushq %r1539 pushq %r1440 pushq %rbx41 pushq %rax42 .cfi_offset %rbx, -4043 .cfi_offset %r14, -3244 .cfi_offset %r15, -2445 movq %rsi, %rbx46.Ltmp2:47 .loc 0 4 21 # d_original_example.c:4:2148 movl %edi, %r14d49.Ltmp3:50 #DEBUG_VALUE: main:argc <- $r14d51 .loc 0 0 21 # d_original_example.c:0:2152 movl $1, %r15d53.Ltmp4:54 .p2align 455.LBB0_2: # %for.body56 # =>This Inner Loop Header: Depth=157 #DEBUG_VALUE: main:argc <- $r14d58 #DEBUG_VALUE: main:argv <- $rbx59 #DEBUG_VALUE: i <- $r1560 .loc 0 5 10 is_stmt 1 # d_original_example.c:5:1061 movq (%rbx,%r15,8), %rdi62 .loc 0 5 5 is_stmt 0 # d_original_example.c:5:563 callq puts@PLT64.Ltmp5:65 .loc 0 4 29 is_stmt 1 # d_original_example.c:4:2966 incq %r1567.Ltmp6:68 #DEBUG_VALUE: i <- $r1569 .loc 0 4 21 is_stmt 0 # d_original_example.c:4:2170 cmpq %r15, %r1471.Ltmp7:72 .loc 0 4 3 # d_original_example.c:4:373 jne .LBB0_274.Ltmp8:75# %bb.3:76 #DEBUG_VALUE: main:argc <- $r14d77 #DEBUG_VALUE: main:argv <- $rbx78 #DEBUG_VALUE: i <- $r1579 .loc 0 0 3 # d_original_example.c:0:380 addq $8, %rsp81 popq %rbx82.Ltmp9:83 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi84 popq %r1485.Ltmp10:86 #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $edi87 popq %r1588 popq %rbp89 .cfi_def_cfa %rsp, 890 .cfi_restore %rbx91 .cfi_restore %r1492 .cfi_restore %r1593 .cfi_restore %rbp94.Ltmp11:95.LBB0_4: # %for.cond.cleanup96 #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $edi97 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi98 .loc 0 6 3 is_stmt 1 # d_original_example.c:6:399 xorl %eax, %eax100 retq101.Ltmp12:102.Lfunc_end0:103 .size main, .Lfunc_end0-main104 .cfi_endproc105 .file 1 "/usr/include" "stdio.h" md5 0xf31eefcc3f15835fc5a4023a625cf609106 # -- End function107 .section .debug_loclists,"",@progbits108 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length109.Ldebug_list_header_start0:110 .short 5 # Version111 .byte 8 # Address size112 .byte 0 # Segment selector size113 .long 3 # Offset entry count114.Lloclists_table_base0:115 .long .Ldebug_loc0-.Lloclists_table_base0116 .long .Ldebug_loc1-.Lloclists_table_base0117 .long .Ldebug_loc2-.Lloclists_table_base0118.Ldebug_loc0:119 .byte 4 # DW_LLE_offset_pair120 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset121 .uleb128 .Ltmp3-.Lfunc_begin0 # ending offset122 .byte 1 # Loc expr size123 .byte 85 # super-register DW_OP_reg5124 .byte 4 # DW_LLE_offset_pair125 .uleb128 .Ltmp3-.Lfunc_begin0 # starting offset126 .uleb128 .Ltmp10-.Lfunc_begin0 # ending offset127 .byte 1 # Loc expr size128 .byte 94 # super-register DW_OP_reg14129 .byte 4 # DW_LLE_offset_pair130 .uleb128 .Ltmp10-.Lfunc_begin0 # starting offset131 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset132 .byte 4 # Loc expr size133 .byte 163 # DW_OP_entry_value134 .byte 1 # 1135 .byte 85 # super-register DW_OP_reg5136 .byte 159 # DW_OP_stack_value137 .byte 0 # DW_LLE_end_of_list138.Ldebug_loc1:139 .byte 4 # DW_LLE_offset_pair140 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset141 .uleb128 .Ltmp4-.Lfunc_begin0 # ending offset142 .byte 1 # Loc expr size143 .byte 84 # DW_OP_reg4144 .byte 4 # DW_LLE_offset_pair145 .uleb128 .Ltmp4-.Lfunc_begin0 # starting offset146 .uleb128 .Ltmp9-.Lfunc_begin0 # ending offset147 .byte 1 # Loc expr size148 .byte 83 # DW_OP_reg3149 .byte 4 # DW_LLE_offset_pair150 .uleb128 .Ltmp9-.Lfunc_begin0 # starting offset151 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset152 .byte 4 # Loc expr size153 .byte 163 # DW_OP_entry_value154 .byte 1 # 1155 .byte 84 # DW_OP_reg4156 .byte 159 # DW_OP_stack_value157 .byte 0 # DW_LLE_end_of_list158.Ldebug_loc2:159 .byte 4 # DW_LLE_offset_pair160 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset161 .uleb128 .Ltmp4-.Lfunc_begin0 # ending offset162 .byte 3 # Loc expr size163 .byte 17 # DW_OP_consts164 .byte 1 # 1165 .byte 159 # DW_OP_stack_value166 .byte 4 # DW_LLE_offset_pair167 .uleb128 .Ltmp4-.Lfunc_begin0 # starting offset168 .uleb128 .Ltmp8-.Lfunc_begin0 # ending offset169 .byte 1 # Loc expr size170 .byte 95 # DW_OP_reg15171 .byte 0 # DW_LLE_end_of_list172.Ldebug_list_header_end0:173 .section .debug_abbrev,"",@progbits174 .byte 1 # Abbreviation Code175 .byte 17 # DW_TAG_compile_unit176 .byte 1 # DW_CHILDREN_yes177 .byte 37 # DW_AT_producer178 .byte 37 # DW_FORM_strx1179 .byte 19 # DW_AT_language180 .byte 5 # DW_FORM_data2181 .byte 3 # DW_AT_name182 .byte 37 # DW_FORM_strx1183 .byte 114 # DW_AT_str_offsets_base184 .byte 23 # DW_FORM_sec_offset185 .byte 16 # DW_AT_stmt_list186 .byte 23 # DW_FORM_sec_offset187 .byte 27 # DW_AT_comp_dir188 .byte 37 # DW_FORM_strx1189 .byte 17 # DW_AT_low_pc190 .byte 27 # DW_FORM_addrx191 .byte 18 # DW_AT_high_pc192 .byte 6 # DW_FORM_data4193 .byte 115 # DW_AT_addr_base194 .byte 23 # DW_FORM_sec_offset195 .ascii "\214\001" # DW_AT_loclists_base196 .byte 23 # DW_FORM_sec_offset197 .byte 0 # EOM(1)198 .byte 0 # EOM(2)199 .byte 2 # Abbreviation Code200 .byte 46 # DW_TAG_subprogram201 .byte 1 # DW_CHILDREN_yes202 .byte 17 # DW_AT_low_pc203 .byte 27 # DW_FORM_addrx204 .byte 18 # DW_AT_high_pc205 .byte 6 # DW_FORM_data4206 .byte 64 # DW_AT_frame_base207 .byte 24 # DW_FORM_exprloc208 .byte 122 # DW_AT_call_all_calls209 .byte 25 # DW_FORM_flag_present210 .byte 3 # DW_AT_name211 .byte 37 # DW_FORM_strx1212 .byte 58 # DW_AT_decl_file213 .byte 11 # DW_FORM_data1214 .byte 59 # DW_AT_decl_line215 .byte 11 # DW_FORM_data1216 .byte 39 # DW_AT_prototyped217 .byte 25 # DW_FORM_flag_present218 .byte 73 # DW_AT_type219 .byte 19 # DW_FORM_ref4220 .byte 63 # DW_AT_external221 .byte 25 # DW_FORM_flag_present222 .byte 0 # EOM(1)223 .byte 0 # EOM(2)224 .byte 3 # Abbreviation Code225 .byte 5 # DW_TAG_formal_parameter226 .byte 0 # DW_CHILDREN_no227 .byte 2 # DW_AT_location228 .byte 34 # DW_FORM_loclistx229 .byte 3 # DW_AT_name230 .byte 37 # DW_FORM_strx1231 .byte 58 # DW_AT_decl_file232 .byte 11 # DW_FORM_data1233 .byte 59 # DW_AT_decl_line234 .byte 11 # DW_FORM_data1235 .byte 73 # DW_AT_type236 .byte 19 # DW_FORM_ref4237 .byte 0 # EOM(1)238 .byte 0 # EOM(2)239 .byte 4 # Abbreviation Code240 .byte 11 # DW_TAG_lexical_block241 .byte 1 # DW_CHILDREN_yes242 .byte 17 # DW_AT_low_pc243 .byte 27 # DW_FORM_addrx244 .byte 18 # DW_AT_high_pc245 .byte 6 # DW_FORM_data4246 .byte 0 # EOM(1)247 .byte 0 # EOM(2)248 .byte 5 # Abbreviation Code249 .byte 52 # DW_TAG_variable250 .byte 0 # DW_CHILDREN_no251 .byte 2 # DW_AT_location252 .byte 34 # DW_FORM_loclistx253 .byte 3 # DW_AT_name254 .byte 37 # DW_FORM_strx1255 .byte 58 # DW_AT_decl_file256 .byte 11 # DW_FORM_data1257 .byte 59 # DW_AT_decl_line258 .byte 11 # DW_FORM_data1259 .byte 73 # DW_AT_type260 .byte 19 # DW_FORM_ref4261 .byte 0 # EOM(1)262 .byte 0 # EOM(2)263 .byte 6 # Abbreviation Code264 .byte 72 # DW_TAG_call_site265 .byte 0 # DW_CHILDREN_no266 .byte 127 # DW_AT_call_origin267 .byte 19 # DW_FORM_ref4268 .byte 125 # DW_AT_call_return_pc269 .byte 27 # DW_FORM_addrx270 .byte 0 # EOM(1)271 .byte 0 # EOM(2)272 .byte 7 # Abbreviation Code273 .byte 46 # DW_TAG_subprogram274 .byte 1 # DW_CHILDREN_yes275 .byte 3 # DW_AT_name276 .byte 37 # DW_FORM_strx1277 .byte 58 # DW_AT_decl_file278 .byte 11 # DW_FORM_data1279 .byte 59 # DW_AT_decl_line280 .byte 5 # DW_FORM_data2281 .byte 39 # DW_AT_prototyped282 .byte 25 # DW_FORM_flag_present283 .byte 73 # DW_AT_type284 .byte 19 # DW_FORM_ref4285 .byte 60 # DW_AT_declaration286 .byte 25 # DW_FORM_flag_present287 .byte 63 # DW_AT_external288 .byte 25 # DW_FORM_flag_present289 .byte 0 # EOM(1)290 .byte 0 # EOM(2)291 .byte 8 # Abbreviation Code292 .byte 5 # DW_TAG_formal_parameter293 .byte 0 # DW_CHILDREN_no294 .byte 73 # DW_AT_type295 .byte 19 # DW_FORM_ref4296 .byte 0 # EOM(1)297 .byte 0 # EOM(2)298 .byte 9 # Abbreviation Code299 .byte 36 # DW_TAG_base_type300 .byte 0 # DW_CHILDREN_no301 .byte 3 # DW_AT_name302 .byte 37 # DW_FORM_strx1303 .byte 62 # DW_AT_encoding304 .byte 11 # DW_FORM_data1305 .byte 11 # DW_AT_byte_size306 .byte 11 # DW_FORM_data1307 .byte 0 # EOM(1)308 .byte 0 # EOM(2)309 .byte 10 # Abbreviation Code310 .byte 15 # DW_TAG_pointer_type311 .byte 0 # DW_CHILDREN_no312 .byte 73 # DW_AT_type313 .byte 19 # DW_FORM_ref4314 .byte 0 # EOM(1)315 .byte 0 # EOM(2)316 .byte 11 # Abbreviation Code317 .byte 38 # DW_TAG_const_type318 .byte 0 # DW_CHILDREN_no319 .byte 73 # DW_AT_type320 .byte 19 # DW_FORM_ref4321 .byte 0 # EOM(1)322 .byte 0 # EOM(2)323 .byte 0 # EOM(3)324 .section .debug_info,"",@progbits325.Lcu_begin0:326 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit327.Ldebug_info_start0:328 .short 5 # DWARF version number329 .byte 1 # DWARF Unit Type330 .byte 8 # Address Size (in bytes)331 .long .debug_abbrev # Offset Into Abbrev. Section332 .byte 1 # Abbrev [1] 0xc:0x7f DW_TAG_compile_unit333 .byte 0 # DW_AT_producer334 .short 29 # DW_AT_language335 .byte 1 # DW_AT_name336 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base337 .long .Lline_table_start0 # DW_AT_stmt_list338 .byte 2 # DW_AT_comp_dir339 .byte 0 # DW_AT_low_pc340 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc341 .long .Laddr_table_base0 # DW_AT_addr_base342 .long .Lloclists_table_base0 # DW_AT_loclists_base343 .byte 2 # Abbrev [2] 0x27:0x38 DW_TAG_subprogram344 .byte 0 # DW_AT_low_pc345 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc346 .byte 1 # DW_AT_frame_base347 .byte 86348 # DW_AT_call_all_calls349 .byte 6 # DW_AT_name350 .byte 0 # DW_AT_decl_file351 .byte 3 # DW_AT_decl_line352 # DW_AT_prototyped353 .long 110 # DW_AT_type354 # DW_AT_external355 .byte 3 # Abbrev [3] 0x36:0x9 DW_TAG_formal_parameter356 .byte 0 # DW_AT_location357 .byte 7 # DW_AT_name358 .byte 0 # DW_AT_decl_file359 .byte 3 # DW_AT_decl_line360 .long 110 # DW_AT_type361 .byte 3 # Abbrev [3] 0x3f:0x9 DW_TAG_formal_parameter362 .byte 1 # DW_AT_location363 .byte 8 # DW_AT_name364 .byte 0 # DW_AT_decl_file365 .byte 3 # DW_AT_decl_line366 .long 128 # DW_AT_type367 .byte 4 # Abbrev [4] 0x48:0x10 DW_TAG_lexical_block368 .byte 0 # DW_AT_low_pc369 .long .Ltmp8-.Lfunc_begin0 # DW_AT_high_pc370 .byte 5 # Abbrev [5] 0x4e:0x9 DW_TAG_variable371 .byte 2 # DW_AT_location372 .byte 9 # DW_AT_name373 .byte 0 # DW_AT_decl_file374 .byte 4 # DW_AT_decl_line375 .long 110 # DW_AT_type376 .byte 0 # End Of Children Mark377 .byte 6 # Abbrev [6] 0x58:0x6 DW_TAG_call_site378 .long 95 # DW_AT_call_origin379 .byte 1 # DW_AT_call_return_pc380 .byte 0 # End Of Children Mark381 .byte 7 # Abbrev [7] 0x5f:0xf DW_TAG_subprogram382 .byte 3 # DW_AT_name383 .byte 1 # DW_AT_decl_file384 .short 661 # DW_AT_decl_line385 # DW_AT_prototyped386 .long 110 # DW_AT_type387 # DW_AT_declaration388 # DW_AT_external389 .byte 8 # Abbrev [8] 0x68:0x5 DW_TAG_formal_parameter390 .long 114 # DW_AT_type391 .byte 0 # End Of Children Mark392 .byte 9 # Abbrev [9] 0x6e:0x4 DW_TAG_base_type393 .byte 4 # DW_AT_name394 .byte 5 # DW_AT_encoding395 .byte 4 # DW_AT_byte_size396 .byte 10 # Abbrev [10] 0x72:0x5 DW_TAG_pointer_type397 .long 119 # DW_AT_type398 .byte 11 # Abbrev [11] 0x77:0x5 DW_TAG_const_type399 .long 124 # DW_AT_type400 .byte 9 # Abbrev [9] 0x7c:0x4 DW_TAG_base_type401 .byte 5 # DW_AT_name402 .byte 6 # DW_AT_encoding403 .byte 1 # DW_AT_byte_size404 .byte 10 # Abbrev [10] 0x80:0x5 DW_TAG_pointer_type405 .long 133 # DW_AT_type406 .byte 10 # Abbrev [10] 0x85:0x5 DW_TAG_pointer_type407 .long 124 # DW_AT_type408 .byte 0 # End Of Children Mark409.Ldebug_info_end0:410 .section .debug_str_offsets,"",@progbits411 .long 44 # Length of String Offsets Set412 .short 5413 .short 0414.Lstr_offsets_base0:415 .section .debug_str,"MS",@progbits,1416.Linfo_string0:417 .asciz "clang version 22.0.0git (https://github.com/UltimateForce21/llvm-project.git 79c0a9e1e7da0f727c41d27c9c6ff8a28bb7d06f)" # string offset=0418.Linfo_string1:419 .asciz "d_original_example.c" # string offset=119420.Linfo_string2:421 .asciz "." # string offset=140422.Linfo_string3:423 .asciz "puts" # string offset=142424.Linfo_string4:425 .asciz "int" # string offset=147426.Linfo_string5:427 .asciz "char" # string offset=151428.Linfo_string6:429 .asciz "main" # string offset=156430.Linfo_string7:431 .asciz "argc" # string offset=161432.Linfo_string8:433 .asciz "argv" # string offset=166434.Linfo_string9:435 .asciz "i" # string offset=171436 .section .debug_str_offsets,"",@progbits437 .long .Linfo_string0438 .long .Linfo_string1439 .long .Linfo_string2440 .long .Linfo_string3441 .long .Linfo_string4442 .long .Linfo_string5443 .long .Linfo_string6444 .long .Linfo_string7445 .long .Linfo_string8446 .long .Linfo_string9447 .section .debug_addr,"",@progbits448 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution449.Ldebug_addr_start0:450 .short 5 # DWARF version number451 .byte 8 # Address size452 .byte 0 # Segment selector size453.Laddr_table_base0:454 .quad .Lfunc_begin0455 .quad .Ltmp5456.Ldebug_addr_end0:457 .ident "clang version 22.0.0git (https://github.com/UltimateForce21/llvm-project.git 79c0a9e1e7da0f727c41d27c9c6ff8a28bb7d06f)"458 .section ".note.GNU-stack","",@progbits459 .addrsig460 .section .debug_line,"",@progbits461.Lline_table_start0:462