https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121424
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note -dA is very useful for reading dwarf output in the assembly instead of
needing a seperate program do the do the dumping.
e.g.
.uleb128 0x9 # (DIE (0x8c) DW_TAG_inlined_subroutine)
.long 0xdb # DW_AT_abstract_origin
.quad .LBI4 # DW_AT_entry_pc
.byte .LVU2 # DW_AT_GNU_entry_view
.long .LLRL1 # DW_AT_ranges
.byte 0x1 # DW_AT_call_file (/app/example.cpp)
.byte 0xf # DW_AT_call_line
.byte 0x7 # DW_AT_call_column
...
.LLRL1:
.byte 0x4 # DW_RLE_offset_pair (*.LLRL1)
.uleb128 .LBB4-.Ltext0 # Range begin address (*.LLRL1)
.uleb128 .LBE4-.Ltext0 # Range end address (*.LLRL1)
.byte 0x4 # DW_RLE_offset_pair (*.LLRL1)
.uleb128 .LBB6-.Ltext0 # Range begin address (*.LLRL1)
.uleb128 .LBE6-.Ltext0 # Range end address (*.LLRL1)
.byte 0 # DW_RLE_end_of_list (*.LLRL1)
This is how I noticed -O2 was working because I tried -O2 first. (the above is
from -O1).