Provide better -O0 assembly on request

Sergey Dmitrouk sdmitrouk at accesssoftek.com
Mon May 18 09:57:16 PDT 2015


Ping (+ attachments with correct names).

----

Hi,

NOTE: there is an attached patch, but it's to show how it can be achieved not
NOTE: for review, that's why the message is not in llvm-commits.  I'd like to
NOTE: get general opinion on the change.

I've been trying to fix PR13269 (https://llvm.org/bugs/show_bug.cgi?id=13269)
in http://reviews.llvm.org/D9084 as that issue stood in the way of getting
correct debug locations.  With those changes applied it is better in general,
but for -O0 flag debug locations are still a mess as FastISel is used for
generating most of code and it doesn't make use of additional information from
SDNodes.

FastISel resets debug locations on materializing constants (see
http://reviews.llvm.org/rL108302), which is a workaround for issue created by
FastISel by eliminating redundancy for constant emission as it implies
instruction reordering and basically shuffled order of debug locations.

Workaround from r108302 mentioned above fails in the way that some instructions
are assigned debug locations of completely unrelated code lines (see attached
"bad" files right after prologue).

Not resetting debug locations of instructions for constants partially fixes it
although leads to worse debugging experience, but still some auxiliary code like
that for register spilling will be marked with almost random debug locations.

The best (in the sense of "most readable" and "easy to debug") assembly is
produced with disabled local value optimization and intact debug locations (see
"good" files in the attachment).

I'd like to propose adding a way to produce this "debuggable" assembly on
request via additional option in Clang.  It could be enabled on -g3 or maybe we
could introduce -g4, although -g2 and -g3 currently seem to be equivalent to
-g (-g1).  Or some other way if anyone has better idea.

As attached patch for LLVM demonstrates, this is quite easy to achieve.

Best regards,
Sergey
-------------- next part --------------
	.text
	.syntax unified
	.eabi_attribute	67, "2.09"	@ Tag_conformance
	.cpu	cortex-a8
	.eabi_attribute	6, 10	@ Tag_CPU_arch
	.eabi_attribute	7, 65	@ Tag_CPU_arch_profile
	.eabi_attribute	8, 1	@ Tag_ARM_ISA_use
	.eabi_attribute	9, 2	@ Tag_THUMB_ISA_use
	.fpu	neon
	.eabi_attribute	17, 1	@ Tag_ABI_PCS_GOT_use
	.eabi_attribute	20, 1	@ Tag_ABI_FP_denormal
	.eabi_attribute	21, 1	@ Tag_ABI_FP_exceptions
	.eabi_attribute	23, 3	@ Tag_ABI_FP_number_model
	.eabi_attribute	34, 1	@ Tag_CPU_unaligned_access
	.eabi_attribute	24, 1	@ Tag_ABI_align_needed
	.eabi_attribute	25, 1	@ Tag_ABI_align_preserved
	.eabi_attribute	28, 1	@ Tag_ABI_VFP_args
	.eabi_attribute	38, 1	@ Tag_ABI_FP_16bit_format
	.eabi_attribute	18, 4	@ Tag_ABI_PCS_wchar_t
	.eabi_attribute	26, 2	@ Tag_ABI_enum_size
	.eabi_attribute	14, 0	@ Tag_ABI_PCS_R9_use
	.eabi_attribute	68, 1	@ Tag_Virtualization_use
	.file	"test.c"
	.globl	main
	.align	2
	.type	main,%function
main:                                   @ @main
.Lfunc_begin0:
	.file	1 "" "test.c"
	.loc	1 2 0                   @ test.c:2:0
	.fnstart
	.cfi_startproc
@ BB#0:                                 @ %entry
	.pad	#8
	sub	sp, sp, #8
.Ltmp0:
	.cfi_def_cfa_offset 8
	movw	r0, #0
	movw	r1, #0
	str	r1, [sp, #4]
	.loc	1 3 9 prologue_end      @ test.c:3:9
.Ltmp1:
	str	r0, [sp]
	.loc	1 5 9                   @ test.c:5:9
.Ltmp2:
	ldr	r0, [sp]
.Ltmp3:
	.loc	1 5 9 is_stmt 0         @ test.c:5:9
	cmp	r0, #0
	ble	.LBB0_2
@ BB#1:                                 @ %if.then
	.loc	1 6 17 is_stmt 1        @ test.c:6:17
.Ltmp4:
	ldr	r0, [sp]
	.loc	1 6 9 is_stmt 0         @ test.c:6:9
	str	r0, [sp, #4]
	b	.LBB0_3
.Ltmp5:
.LBB0_2:                                @ %if.end
	mvn	r0, #0
	mvn	r1, #0
	.loc	1 8 7 is_stmt 1         @ test.c:8:7
	str	r1, [sp]
	.loc	1 10 5                  @ test.c:10:5
	str	r0, [sp, #4]
.LBB0_3:                                @ %return
	.loc	1 11 1                  @ test.c:11:1
	ldr	r0, [sp, #4]
	add	sp, sp, #8
	bx	lr
.Ltmp6:
.Lfunc_end0:
	.size	main, .Lfunc_end0-main
	.cfi_endproc
	.cantunwind
	.fnend

	.section	.debug_str,"MS",%progbits,1
.Linfo_string0:
	.asciz	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
.Linfo_string1:
	.asciz	"test.c"
.Linfo_string2:
	.asciz	"/home/xaizek/repos/clang-llvm/release"
.Linfo_string3:
	.asciz	"main"
.Linfo_string4:
	.asciz	"int"
.Linfo_string5:
	.asciz	"x"
	.section	.debug_loc,"",%progbits
	.section	.debug_abbrev,"",%progbits
.Lsection_abbrev:
	.byte	1                       @ Abbreviation Code
	.byte	17                      @ DW_TAG_compile_unit
	.byte	1                       @ DW_CHILDREN_yes
	.byte	37                      @ DW_AT_producer
	.byte	14                      @ DW_FORM_strp
	.byte	19                      @ DW_AT_language
	.byte	5                       @ DW_FORM_data2
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	16                      @ DW_AT_stmt_list
	.byte	23                      @ DW_FORM_sec_offset
	.byte	27                      @ DW_AT_comp_dir
	.byte	14                      @ DW_FORM_strp
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	2                       @ Abbreviation Code
	.byte	46                      @ DW_TAG_subprogram
	.byte	1                       @ DW_CHILDREN_yes
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	64                      @ DW_AT_frame_base
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	63                      @ DW_AT_external
	.byte	25                      @ DW_FORM_flag_present
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	3                       @ Abbreviation Code
	.byte	52                      @ DW_TAG_variable
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	4                       @ Abbreviation Code
	.byte	36                      @ DW_TAG_base_type
	.byte	0                       @ DW_CHILDREN_no
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	62                      @ DW_AT_encoding
	.byte	11                      @ DW_FORM_data1
	.byte	11                      @ DW_AT_byte_size
	.byte	11                      @ DW_FORM_data1
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	0                       @ EOM(3)
	.section	.debug_info,"",%progbits
.Lsection_info:
.Lcu_begin0:
	.long	78                      @ Length of Unit
	.short	4                       @ DWARF version number
	.long	.Lsection_abbrev        @ Offset Into Abbrev. Section
	.byte	4                       @ Address Size (in bytes)
	.byte	1                       @ Abbrev [1] 0xb:0x47 DW_TAG_compile_unit
	.long	.Linfo_string0          @ DW_AT_producer
	.short	12                      @ DW_AT_language
	.long	.Linfo_string1          @ DW_AT_name
	.long	.Lline_table_start0     @ DW_AT_stmt_list
	.long	.Linfo_string2          @ DW_AT_comp_dir
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	2                       @ Abbrev [2] 0x26:0x24 DW_TAG_subprogram
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	1                       @ DW_AT_frame_base
	.byte	93
	.long	.Linfo_string3          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
	.long	74                      @ DW_AT_type
                                        @ DW_AT_external
	.byte	3                       @ Abbrev [3] 0x3b:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	0
	.long	.Linfo_string5          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	3                       @ DW_AT_decl_line
	.long	74                      @ DW_AT_type
	.byte	0                       @ End Of Children Mark
	.byte	4                       @ Abbrev [4] 0x4a:0x7 DW_TAG_base_type
	.long	.Linfo_string4          @ DW_AT_name
	.byte	5                       @ DW_AT_encoding
	.byte	4                       @ DW_AT_byte_size
	.byte	0                       @ End Of Children Mark
	.section	.debug_ranges,"",%progbits
.Ldebug_range:
	.section	.debug_pubnames,"",%progbits
	.long	.LpubNames_end0-.LpubNames_begin0 @ Length of Public Names Info
.LpubNames_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	82                      @ Compilation Unit Length
	.long	38                      @ DIE offset
	.asciz	"main"                  @ External Name
	.long	0                       @ End Mark
.LpubNames_end0:
	.section	.debug_pubtypes,"",%progbits
	.long	.LpubTypes_end0-.LpubTypes_begin0 @ Length of Public Types Info
.LpubTypes_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	82                      @ Compilation Unit Length
	.long	74                      @ DIE offset
	.asciz	"int"                   @ External Name
	.long	0                       @ End Mark
.LpubTypes_end0:
	.cfi_sections .debug_frame

	.ident	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
	.section	".note.GNU-stack","",%progbits
	.section	.debug_line,"",%progbits
.Lline_table_start0:
-------------- next part --------------
	.text
	.syntax unified
	.eabi_attribute	67, "2.09"	@ Tag_conformance
	.cpu	cortex-a8
	.eabi_attribute	6, 10	@ Tag_CPU_arch
	.eabi_attribute	7, 65	@ Tag_CPU_arch_profile
	.eabi_attribute	8, 1	@ Tag_ARM_ISA_use
	.eabi_attribute	9, 2	@ Tag_THUMB_ISA_use
	.fpu	neon
	.eabi_attribute	17, 1	@ Tag_ABI_PCS_GOT_use
	.eabi_attribute	20, 1	@ Tag_ABI_FP_denormal
	.eabi_attribute	21, 1	@ Tag_ABI_FP_exceptions
	.eabi_attribute	23, 3	@ Tag_ABI_FP_number_model
	.eabi_attribute	34, 1	@ Tag_CPU_unaligned_access
	.eabi_attribute	24, 1	@ Tag_ABI_align_needed
	.eabi_attribute	25, 1	@ Tag_ABI_align_preserved
	.eabi_attribute	28, 1	@ Tag_ABI_VFP_args
	.eabi_attribute	38, 1	@ Tag_ABI_FP_16bit_format
	.eabi_attribute	18, 4	@ Tag_ABI_PCS_wchar_t
	.eabi_attribute	26, 2	@ Tag_ABI_enum_size
	.eabi_attribute	14, 0	@ Tag_ABI_PCS_R9_use
	.eabi_attribute	68, 1	@ Tag_Virtualization_use
	.file	"test.c"
	.globl	main
	.align	2
	.type	main,%function
main:                                   @ @main
.Lfunc_begin0:
	.file	1 "" "test.c"
	.loc	1 2 0                   @ test.c:2:0
	.fnstart
	.cfi_startproc
@ BB#0:                                 @ %entry
	.save	{r11, lr}
	push	{r11, lr}
.Ltmp0:
	.cfi_def_cfa_offset 8
.Ltmp1:
	.cfi_offset lr, -4
.Ltmp2:
	.cfi_offset r11, -8
	.pad	#20
	sub	sp, sp, #20
.Ltmp3:
	.cfi_def_cfa_offset 28
	mov	r1, r0
	mvn	r2, #0
	mvn	r3, #3
	mvn	r12, #0
	movw	lr, #0
	str	lr, [sp, #16]
	str	r0, [sp, #12]
	.loc	1 3 7 prologue_end      @ test.c:3:7
.Ltmp4:
	str	r12, [sp, #12]
	.loc	1 4 9                   @ test.c:4:9
	str	r3, [sp, #8]
	.loc	1 5 9                   @ test.c:5:9
	str	r2, [sp, #4]
	.loc	1 6 9                   @ test.c:6:9
.Ltmp5:
	ldr	r0, [sp, #12]
.Ltmp6:
	.loc	1 6 9 is_stmt 0         @ test.c:6:9
	cmp	r0, #0
	str	r1, [sp]                @ 4-byte Spill
	bne	.LBB0_2
@ BB#1:                                 @ %if.then
	mvn	r0, #3
	.loc	1 7 9 is_stmt 1         @ test.c:7:9
.Ltmp7:
	str	r0, [sp, #16]
	b	.LBB0_9
.Ltmp8:
.LBB0_2:                                @ %if.end
	mvn	r0, #1
	.loc	1 10 7                  @ test.c:10:7
	str	r0, [sp, #12]
	.loc	1 11 9                  @ test.c:11:9
.Ltmp9:
	ldr	r0, [sp, #12]
.Ltmp10:
	.loc	1 11 9 is_stmt 0        @ test.c:11:9
	cmp	r0, #0
	bne	.LBB0_4
@ BB#3:                                 @ %if.then2
	mvn	r0, #2
	.loc	1 12 9 is_stmt 1        @ test.c:12:9
.Ltmp11:
	str	r0, [sp, #16]
	b	.LBB0_9
.Ltmp12:
.LBB0_4:                                @ %if.end3
	mvn	r0, #2
	.loc	1 15 7                  @ test.c:15:7
	str	r0, [sp, #12]
	.loc	1 16 9                  @ test.c:16:9
.Ltmp13:
	ldr	r0, [sp, #12]
.Ltmp14:
	.loc	1 16 9 is_stmt 0        @ test.c:16:9
	cmp	r0, #0
	bne	.LBB0_6
@ BB#5:                                 @ %if.then5
	mvn	r0, #1
	.loc	1 17 9 is_stmt 1        @ test.c:17:9
.Ltmp15:
	str	r0, [sp, #16]
	b	.LBB0_9
.Ltmp16:
.LBB0_6:                                @ %if.end6
	mvn	r0, #3
	.loc	1 20 7                  @ test.c:20:7
	str	r0, [sp, #12]
	.loc	1 21 9                  @ test.c:21:9
.Ltmp17:
	ldr	r0, [sp, #12]
.Ltmp18:
	.loc	1 21 9 is_stmt 0        @ test.c:21:9
	cmp	r0, #0
	bne	.LBB0_8
@ BB#7:                                 @ %if.then8
	mvn	r0, #0
	.loc	1 22 9 is_stmt 1        @ test.c:22:9
.Ltmp19:
	str	r0, [sp, #16]
	b	.LBB0_9
.Ltmp20:
.LBB0_8:                                @ %if.end9
	movw	r0, #0
	.loc	1 25 5                  @ test.c:25:5
	str	r0, [sp, #16]
.LBB0_9:                                @ %return
	.loc	1 26 1                  @ test.c:26:1
	ldr	r0, [sp, #16]
	add	sp, sp, #20
	pop	{r11, pc}
.Ltmp21:
.Lfunc_end0:
	.size	main, .Lfunc_end0-main
	.cfi_endproc
	.cantunwind
	.fnend

	.section	.debug_str,"MS",%progbits,1
.Linfo_string0:
	.asciz	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
.Linfo_string1:
	.asciz	"test.c"
.Linfo_string2:
	.asciz	"/home/xaizek/repos/clang-llvm/release"
.Linfo_string3:
	.asciz	"main"
.Linfo_string4:
	.asciz	"int"
.Linfo_string5:
	.asciz	"x"
.Linfo_string6:
	.asciz	"y"
.Linfo_string7:
	.asciz	"z"
	.section	.debug_loc,"",%progbits
	.section	.debug_abbrev,"",%progbits
.Lsection_abbrev:
	.byte	1                       @ Abbreviation Code
	.byte	17                      @ DW_TAG_compile_unit
	.byte	1                       @ DW_CHILDREN_yes
	.byte	37                      @ DW_AT_producer
	.byte	14                      @ DW_FORM_strp
	.byte	19                      @ DW_AT_language
	.byte	5                       @ DW_FORM_data2
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	16                      @ DW_AT_stmt_list
	.byte	23                      @ DW_FORM_sec_offset
	.byte	27                      @ DW_AT_comp_dir
	.byte	14                      @ DW_FORM_strp
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	2                       @ Abbreviation Code
	.byte	46                      @ DW_TAG_subprogram
	.byte	1                       @ DW_CHILDREN_yes
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	64                      @ DW_AT_frame_base
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	39                      @ DW_AT_prototyped
	.byte	25                      @ DW_FORM_flag_present
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	63                      @ DW_AT_external
	.byte	25                      @ DW_FORM_flag_present
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	3                       @ Abbreviation Code
	.byte	5                       @ DW_TAG_formal_parameter
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	4                       @ Abbreviation Code
	.byte	52                      @ DW_TAG_variable
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	5                       @ Abbreviation Code
	.byte	36                      @ DW_TAG_base_type
	.byte	0                       @ DW_CHILDREN_no
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	62                      @ DW_AT_encoding
	.byte	11                      @ DW_FORM_data1
	.byte	11                      @ DW_AT_byte_size
	.byte	11                      @ DW_FORM_data1
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	0                       @ EOM(3)
	.section	.debug_info,"",%progbits
.Lsection_info:
.Lcu_begin0:
	.long	106                     @ Length of Unit
	.short	4                       @ DWARF version number
	.long	.Lsection_abbrev        @ Offset Into Abbrev. Section
	.byte	4                       @ Address Size (in bytes)
	.byte	1                       @ Abbrev [1] 0xb:0x63 DW_TAG_compile_unit
	.long	.Linfo_string0          @ DW_AT_producer
	.short	12                      @ DW_AT_language
	.long	.Linfo_string1          @ DW_AT_name
	.long	.Lline_table_start0     @ DW_AT_stmt_list
	.long	.Linfo_string2          @ DW_AT_comp_dir
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	2                       @ Abbrev [2] 0x26:0x40 DW_TAG_subprogram
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	1                       @ DW_AT_frame_base
	.byte	93
	.long	.Linfo_string3          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
                                        @ DW_AT_prototyped
	.long	102                     @ DW_AT_type
                                        @ DW_AT_external
	.byte	3                       @ Abbrev [3] 0x3b:0xe DW_TAG_formal_parameter
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	12
	.long	.Linfo_string5          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	4                       @ Abbrev [4] 0x49:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	8
	.long	.Linfo_string6          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	4                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	4                       @ Abbrev [4] 0x57:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	4
	.long	.Linfo_string7          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	5                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	0                       @ End Of Children Mark
	.byte	5                       @ Abbrev [5] 0x66:0x7 DW_TAG_base_type
	.long	.Linfo_string4          @ DW_AT_name
	.byte	5                       @ DW_AT_encoding
	.byte	4                       @ DW_AT_byte_size
	.byte	0                       @ End Of Children Mark
	.section	.debug_ranges,"",%progbits
.Ldebug_range:
	.section	.debug_pubnames,"",%progbits
	.long	.LpubNames_end0-.LpubNames_begin0 @ Length of Public Names Info
.LpubNames_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	110                     @ Compilation Unit Length
	.long	38                      @ DIE offset
	.asciz	"main"                  @ External Name
	.long	0                       @ End Mark
.LpubNames_end0:
	.section	.debug_pubtypes,"",%progbits
	.long	.LpubTypes_end0-.LpubTypes_begin0 @ Length of Public Types Info
.LpubTypes_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	110                     @ Compilation Unit Length
	.long	102                     @ DIE offset
	.asciz	"int"                   @ External Name
	.long	0                       @ End Mark
.LpubTypes_end0:
	.cfi_sections .debug_frame

	.ident	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
	.section	".note.GNU-stack","",%progbits
	.section	.debug_line,"",%progbits
.Lline_table_start0:
-------------- next part --------------
	.text
	.syntax unified
	.eabi_attribute	67, "2.09"	@ Tag_conformance
	.cpu	cortex-a8
	.eabi_attribute	6, 10	@ Tag_CPU_arch
	.eabi_attribute	7, 65	@ Tag_CPU_arch_profile
	.eabi_attribute	8, 1	@ Tag_ARM_ISA_use
	.eabi_attribute	9, 2	@ Tag_THUMB_ISA_use
	.fpu	neon
	.eabi_attribute	17, 1	@ Tag_ABI_PCS_GOT_use
	.eabi_attribute	20, 1	@ Tag_ABI_FP_denormal
	.eabi_attribute	21, 1	@ Tag_ABI_FP_exceptions
	.eabi_attribute	23, 3	@ Tag_ABI_FP_number_model
	.eabi_attribute	34, 1	@ Tag_CPU_unaligned_access
	.eabi_attribute	24, 1	@ Tag_ABI_align_needed
	.eabi_attribute	25, 1	@ Tag_ABI_align_preserved
	.eabi_attribute	28, 1	@ Tag_ABI_VFP_args
	.eabi_attribute	38, 1	@ Tag_ABI_FP_16bit_format
	.eabi_attribute	18, 4	@ Tag_ABI_PCS_wchar_t
	.eabi_attribute	26, 2	@ Tag_ABI_enum_size
	.eabi_attribute	14, 0	@ Tag_ABI_PCS_R9_use
	.eabi_attribute	68, 1	@ Tag_Virtualization_use
	.file	"test.c"
	.globl	main
	.align	2
	.type	main,%function
main:                                   @ @main
.Lfunc_begin0:
	.file	1 "" "test.c"
	.loc	1 2 0                   @ test.c:2:0
	.fnstart
	.cfi_startproc
@ BB#0:                                 @ %entry
	.loc	1 3 9 prologue_end      @ test.c:3:9
	.pad	#8
	sub	sp, sp, #8
.Ltmp0:
	.cfi_def_cfa_offset 8
	movw	r0, #0
	str	r0, [sp, #4]
	str	r0, [sp]
	.loc	1 5 9                   @ test.c:5:9
.Ltmp1:
	ldr	r0, [sp]
.Ltmp2:
	.loc	1 5 9 is_stmt 0         @ test.c:5:9
	cmp	r0, #0
	ble	.LBB0_2
@ BB#1:                                 @ %if.then
	.loc	1 6 17 is_stmt 1        @ test.c:6:17
.Ltmp3:
	ldr	r0, [sp]
	.loc	1 6 9 is_stmt 0         @ test.c:6:9
	str	r0, [sp, #4]
	b	.LBB0_3
.Ltmp4:
.LBB0_2:                                @ %if.end
	.loc	1 10 5 is_stmt 1        @ test.c:10:5
	mvn	r0, #0
	.loc	1 8 7                   @ test.c:8:7
	str	r0, [sp]
	.loc	1 10 5                  @ test.c:10:5
	str	r0, [sp, #4]
.LBB0_3:                                @ %return
	.loc	1 11 1                  @ test.c:11:1
	ldr	r0, [sp, #4]
	add	sp, sp, #8
	bx	lr
.Ltmp5:
.Lfunc_end0:
	.size	main, .Lfunc_end0-main
	.cfi_endproc
	.cantunwind
	.fnend

	.section	.debug_str,"MS",%progbits,1
.Linfo_string0:
	.asciz	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
.Linfo_string1:
	.asciz	"test.c"
.Linfo_string2:
	.asciz	"/home/xaizek/repos/clang-llvm/release"
.Linfo_string3:
	.asciz	"main"
.Linfo_string4:
	.asciz	"int"
.Linfo_string5:
	.asciz	"x"
	.section	.debug_loc,"",%progbits
	.section	.debug_abbrev,"",%progbits
.Lsection_abbrev:
	.byte	1                       @ Abbreviation Code
	.byte	17                      @ DW_TAG_compile_unit
	.byte	1                       @ DW_CHILDREN_yes
	.byte	37                      @ DW_AT_producer
	.byte	14                      @ DW_FORM_strp
	.byte	19                      @ DW_AT_language
	.byte	5                       @ DW_FORM_data2
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	16                      @ DW_AT_stmt_list
	.byte	23                      @ DW_FORM_sec_offset
	.byte	27                      @ DW_AT_comp_dir
	.byte	14                      @ DW_FORM_strp
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	2                       @ Abbreviation Code
	.byte	46                      @ DW_TAG_subprogram
	.byte	1                       @ DW_CHILDREN_yes
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	64                      @ DW_AT_frame_base
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	63                      @ DW_AT_external
	.byte	25                      @ DW_FORM_flag_present
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	3                       @ Abbreviation Code
	.byte	52                      @ DW_TAG_variable
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	4                       @ Abbreviation Code
	.byte	36                      @ DW_TAG_base_type
	.byte	0                       @ DW_CHILDREN_no
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	62                      @ DW_AT_encoding
	.byte	11                      @ DW_FORM_data1
	.byte	11                      @ DW_AT_byte_size
	.byte	11                      @ DW_FORM_data1
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	0                       @ EOM(3)
	.section	.debug_info,"",%progbits
.Lsection_info:
.Lcu_begin0:
	.long	78                      @ Length of Unit
	.short	4                       @ DWARF version number
	.long	.Lsection_abbrev        @ Offset Into Abbrev. Section
	.byte	4                       @ Address Size (in bytes)
	.byte	1                       @ Abbrev [1] 0xb:0x47 DW_TAG_compile_unit
	.long	.Linfo_string0          @ DW_AT_producer
	.short	12                      @ DW_AT_language
	.long	.Linfo_string1          @ DW_AT_name
	.long	.Lline_table_start0     @ DW_AT_stmt_list
	.long	.Linfo_string2          @ DW_AT_comp_dir
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	2                       @ Abbrev [2] 0x26:0x24 DW_TAG_subprogram
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	1                       @ DW_AT_frame_base
	.byte	93
	.long	.Linfo_string3          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
	.long	74                      @ DW_AT_type
                                        @ DW_AT_external
	.byte	3                       @ Abbrev [3] 0x3b:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	0
	.long	.Linfo_string5          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	3                       @ DW_AT_decl_line
	.long	74                      @ DW_AT_type
	.byte	0                       @ End Of Children Mark
	.byte	4                       @ Abbrev [4] 0x4a:0x7 DW_TAG_base_type
	.long	.Linfo_string4          @ DW_AT_name
	.byte	5                       @ DW_AT_encoding
	.byte	4                       @ DW_AT_byte_size
	.byte	0                       @ End Of Children Mark
	.section	.debug_ranges,"",%progbits
.Ldebug_range:
	.section	.debug_pubnames,"",%progbits
	.long	.LpubNames_end0-.LpubNames_begin0 @ Length of Public Names Info
.LpubNames_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	82                      @ Compilation Unit Length
	.long	38                      @ DIE offset
	.asciz	"main"                  @ External Name
	.long	0                       @ End Mark
.LpubNames_end0:
	.section	.debug_pubtypes,"",%progbits
	.long	.LpubTypes_end0-.LpubTypes_begin0 @ Length of Public Types Info
.LpubTypes_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	82                      @ Compilation Unit Length
	.long	74                      @ DIE offset
	.asciz	"int"                   @ External Name
	.long	0                       @ End Mark
.LpubTypes_end0:
	.cfi_sections .debug_frame

	.ident	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
	.section	".note.GNU-stack","",%progbits
	.section	.debug_line,"",%progbits
.Lline_table_start0:
-------------- next part --------------
	.text
	.syntax unified
	.eabi_attribute	67, "2.09"	@ Tag_conformance
	.cpu	cortex-a8
	.eabi_attribute	6, 10	@ Tag_CPU_arch
	.eabi_attribute	7, 65	@ Tag_CPU_arch_profile
	.eabi_attribute	8, 1	@ Tag_ARM_ISA_use
	.eabi_attribute	9, 2	@ Tag_THUMB_ISA_use
	.fpu	neon
	.eabi_attribute	17, 1	@ Tag_ABI_PCS_GOT_use
	.eabi_attribute	20, 1	@ Tag_ABI_FP_denormal
	.eabi_attribute	21, 1	@ Tag_ABI_FP_exceptions
	.eabi_attribute	23, 3	@ Tag_ABI_FP_number_model
	.eabi_attribute	34, 1	@ Tag_CPU_unaligned_access
	.eabi_attribute	24, 1	@ Tag_ABI_align_needed
	.eabi_attribute	25, 1	@ Tag_ABI_align_preserved
	.eabi_attribute	28, 1	@ Tag_ABI_VFP_args
	.eabi_attribute	38, 1	@ Tag_ABI_FP_16bit_format
	.eabi_attribute	18, 4	@ Tag_ABI_PCS_wchar_t
	.eabi_attribute	26, 2	@ Tag_ABI_enum_size
	.eabi_attribute	14, 0	@ Tag_ABI_PCS_R9_use
	.eabi_attribute	68, 1	@ Tag_Virtualization_use
	.file	"test.c"
	.globl	main
	.align	2
	.type	main,%function
main:                                   @ @main
.Lfunc_begin0:
	.file	1 "" "test.c"
	.loc	1 2 0                   @ test.c:2:0
	.fnstart
	.cfi_startproc
@ BB#0:                                 @ %entry
	.loc	1 5 9 prologue_end      @ test.c:5:9
	.pad	#16
	sub	sp, sp, #16
.Ltmp0:
	.cfi_def_cfa_offset 16
	mvn	r1, #0
	.loc	1 4 9                   @ test.c:4:9
	mvn	r2, #3
	movw	r3, #0
	str	r3, [sp, #12]
	str	r0, [sp, #8]
	.loc	1 3 7                   @ test.c:3:7
	str	r1, [sp, #8]
	.loc	1 4 9                   @ test.c:4:9
	str	r2, [sp, #4]
	.loc	1 5 9                   @ test.c:5:9
	str	r1, [sp]
	.loc	1 6 9                   @ test.c:6:9
.Ltmp1:
	ldr	r0, [sp, #8]
.Ltmp2:
	.loc	1 6 9 is_stmt 0         @ test.c:6:9
	cmp	r0, #0
	bne	.LBB0_2
@ BB#1:                                 @ %if.then
	.loc	1 7 9 is_stmt 1         @ test.c:7:9
.Ltmp3:
	mvn	r0, #3
	str	r0, [sp, #12]
	b	.LBB0_9
.Ltmp4:
.LBB0_2:                                @ %if.end
	.loc	1 10 7                  @ test.c:10:7
	mvn	r0, #1
	str	r0, [sp, #8]
	.loc	1 11 9                  @ test.c:11:9
.Ltmp5:
	ldr	r0, [sp, #8]
.Ltmp6:
	.loc	1 11 9 is_stmt 0        @ test.c:11:9
	cmp	r0, #0
	bne	.LBB0_4
@ BB#3:                                 @ %if.then2
	.loc	1 12 9 is_stmt 1        @ test.c:12:9
.Ltmp7:
	mvn	r0, #2
	str	r0, [sp, #12]
	b	.LBB0_9
.Ltmp8:
.LBB0_4:                                @ %if.end3
	.loc	1 15 7                  @ test.c:15:7
	mvn	r0, #2
	str	r0, [sp, #8]
	.loc	1 16 9                  @ test.c:16:9
.Ltmp9:
	ldr	r0, [sp, #8]
.Ltmp10:
	.loc	1 16 9 is_stmt 0        @ test.c:16:9
	cmp	r0, #0
	bne	.LBB0_6
@ BB#5:                                 @ %if.then5
	.loc	1 17 9 is_stmt 1        @ test.c:17:9
.Ltmp11:
	mvn	r0, #1
	str	r0, [sp, #12]
	b	.LBB0_9
.Ltmp12:
.LBB0_6:                                @ %if.end6
	.loc	1 20 7                  @ test.c:20:7
	mvn	r0, #3
	str	r0, [sp, #8]
	.loc	1 21 9                  @ test.c:21:9
.Ltmp13:
	ldr	r0, [sp, #8]
.Ltmp14:
	.loc	1 21 9 is_stmt 0        @ test.c:21:9
	cmp	r0, #0
	bne	.LBB0_8
@ BB#7:                                 @ %if.then8
	.loc	1 22 9 is_stmt 1        @ test.c:22:9
.Ltmp15:
	mvn	r0, #0
	str	r0, [sp, #12]
	b	.LBB0_9
.Ltmp16:
.LBB0_8:                                @ %if.end9
	.loc	1 25 5                  @ test.c:25:5
	movw	r0, #0
	str	r0, [sp, #12]
.LBB0_9:                                @ %return
	.loc	1 26 1                  @ test.c:26:1
	ldr	r0, [sp, #12]
	add	sp, sp, #16
	bx	lr
.Ltmp17:
.Lfunc_end0:
	.size	main, .Lfunc_end0-main
	.cfi_endproc
	.cantunwind
	.fnend

	.section	.debug_str,"MS",%progbits,1
.Linfo_string0:
	.asciz	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
.Linfo_string1:
	.asciz	"test.c"
.Linfo_string2:
	.asciz	"/home/xaizek/repos/clang-llvm/release"
.Linfo_string3:
	.asciz	"main"
.Linfo_string4:
	.asciz	"int"
.Linfo_string5:
	.asciz	"x"
.Linfo_string6:
	.asciz	"y"
.Linfo_string7:
	.asciz	"z"
	.section	.debug_loc,"",%progbits
	.section	.debug_abbrev,"",%progbits
.Lsection_abbrev:
	.byte	1                       @ Abbreviation Code
	.byte	17                      @ DW_TAG_compile_unit
	.byte	1                       @ DW_CHILDREN_yes
	.byte	37                      @ DW_AT_producer
	.byte	14                      @ DW_FORM_strp
	.byte	19                      @ DW_AT_language
	.byte	5                       @ DW_FORM_data2
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	16                      @ DW_AT_stmt_list
	.byte	23                      @ DW_FORM_sec_offset
	.byte	27                      @ DW_AT_comp_dir
	.byte	14                      @ DW_FORM_strp
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	2                       @ Abbreviation Code
	.byte	46                      @ DW_TAG_subprogram
	.byte	1                       @ DW_CHILDREN_yes
	.byte	17                      @ DW_AT_low_pc
	.byte	1                       @ DW_FORM_addr
	.byte	18                      @ DW_AT_high_pc
	.byte	6                       @ DW_FORM_data4
	.byte	64                      @ DW_AT_frame_base
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	39                      @ DW_AT_prototyped
	.byte	25                      @ DW_FORM_flag_present
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	63                      @ DW_AT_external
	.byte	25                      @ DW_FORM_flag_present
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	3                       @ Abbreviation Code
	.byte	5                       @ DW_TAG_formal_parameter
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	4                       @ Abbreviation Code
	.byte	52                      @ DW_TAG_variable
	.byte	0                       @ DW_CHILDREN_no
	.byte	2                       @ DW_AT_location
	.byte	24                      @ DW_FORM_exprloc
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	58                      @ DW_AT_decl_file
	.byte	11                      @ DW_FORM_data1
	.byte	59                      @ DW_AT_decl_line
	.byte	11                      @ DW_FORM_data1
	.byte	73                      @ DW_AT_type
	.byte	19                      @ DW_FORM_ref4
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	5                       @ Abbreviation Code
	.byte	36                      @ DW_TAG_base_type
	.byte	0                       @ DW_CHILDREN_no
	.byte	3                       @ DW_AT_name
	.byte	14                      @ DW_FORM_strp
	.byte	62                      @ DW_AT_encoding
	.byte	11                      @ DW_FORM_data1
	.byte	11                      @ DW_AT_byte_size
	.byte	11                      @ DW_FORM_data1
	.byte	0                       @ EOM(1)
	.byte	0                       @ EOM(2)
	.byte	0                       @ EOM(3)
	.section	.debug_info,"",%progbits
.Lsection_info:
.Lcu_begin0:
	.long	106                     @ Length of Unit
	.short	4                       @ DWARF version number
	.long	.Lsection_abbrev        @ Offset Into Abbrev. Section
	.byte	4                       @ Address Size (in bytes)
	.byte	1                       @ Abbrev [1] 0xb:0x63 DW_TAG_compile_unit
	.long	.Linfo_string0          @ DW_AT_producer
	.short	12                      @ DW_AT_language
	.long	.Linfo_string1          @ DW_AT_name
	.long	.Lline_table_start0     @ DW_AT_stmt_list
	.long	.Linfo_string2          @ DW_AT_comp_dir
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	2                       @ Abbrev [2] 0x26:0x40 DW_TAG_subprogram
	.long	.Lfunc_begin0           @ DW_AT_low_pc
	.long	.Lfunc_end0-.Lfunc_begin0 @ DW_AT_high_pc
	.byte	1                       @ DW_AT_frame_base
	.byte	93
	.long	.Linfo_string3          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
                                        @ DW_AT_prototyped
	.long	102                     @ DW_AT_type
                                        @ DW_AT_external
	.byte	3                       @ Abbrev [3] 0x3b:0xe DW_TAG_formal_parameter
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	8
	.long	.Linfo_string5          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	1                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	4                       @ Abbrev [4] 0x49:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	4
	.long	.Linfo_string6          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	4                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	4                       @ Abbrev [4] 0x57:0xe DW_TAG_variable
	.byte	2                       @ DW_AT_location
	.byte	145
	.byte	0
	.long	.Linfo_string7          @ DW_AT_name
	.byte	1                       @ DW_AT_decl_file
	.byte	5                       @ DW_AT_decl_line
	.long	102                     @ DW_AT_type
	.byte	0                       @ End Of Children Mark
	.byte	5                       @ Abbrev [5] 0x66:0x7 DW_TAG_base_type
	.long	.Linfo_string4          @ DW_AT_name
	.byte	5                       @ DW_AT_encoding
	.byte	4                       @ DW_AT_byte_size
	.byte	0                       @ End Of Children Mark
	.section	.debug_ranges,"",%progbits
.Ldebug_range:
	.section	.debug_pubnames,"",%progbits
	.long	.LpubNames_end0-.LpubNames_begin0 @ Length of Public Names Info
.LpubNames_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	110                     @ Compilation Unit Length
	.long	38                      @ DIE offset
	.asciz	"main"                  @ External Name
	.long	0                       @ End Mark
.LpubNames_end0:
	.section	.debug_pubtypes,"",%progbits
	.long	.LpubTypes_end0-.LpubTypes_begin0 @ Length of Public Types Info
.LpubTypes_begin0:
	.short	2                       @ DWARF Version
	.long	.Lcu_begin0             @ Offset of Compilation Unit Info
	.long	110                     @ Compilation Unit Length
	.long	102                     @ DIE offset
	.asciz	"int"                   @ External Name
	.long	0                       @ End Mark
.LpubTypes_end0:
	.cfi_sections .debug_frame

	.ident	"clang version 3.7.0 (http://llvm.org/git/clang.git 91e509234ee370ec58a1cb3fa7e6b1ad5a74c891) (http://llvm.org/git/llvm.git 2fbc652200639317cd35c1d924a606e711b0eec7)"
	.section	".note.GNU-stack","",%progbits
	.section	.debug_line,"",%progbits
.Lline_table_start0:


More information about the llvm-commits mailing list