[PATCH] D135488: [codegen][WIP] Display stack layouts in console

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 12 21:10:47 PDT 2022


dblaikie added a comment.

In D135488#3854624 <https://reviews.llvm.org/D135488#3854624>, @nickdesaulniers wrote:

> Playing around with `llvm-dwarfdump` today, I think I found an interesting example:
>
> Consider the following DWARF DIE:
>
>   0x00017e5e:           DW_TAG_variable
>                           DW_AT_location  (0x00002144:
>                              [0x00000000000007c4, 0x00000000000007c8): DW_OP_reg8 W8
>                              [0x00000000000007c8, 0x00000000000007d8): DW_OP_breg31 WSP+48
>                              [0x00000000000007d8, 0x00000000000007e8): DW_OP_lit0, DW_OP_stack_value)
>                           DW_AT_abstract_origin   (0x00016776 "sp_el0")
>
> How I read this: `sp_el0` is in `w8` while the program counter is from 0x7c4 until 0x7c8 (exclusive, based on looking at the disassembly), at which point it's spilled to `wsp+48` until the program counter reaches 0x7e8 at which point (this gets hazy, but https://dwarfstd.org/ShowIssue.php?issue=100831.1 is worth a read) the value is "rematerializable?"
>
> Though I also see DW_AT_location attributes getting pretty crazy.

Yep, in terms of DWARF that all sounds correct. "Rematerializable" Means, in this case, in the range `[7d8, 7e8)` the value of the variable is zero - there's no storage (the zero isn't in a register or in memory), but the value is zero.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135488/new/

https://reviews.llvm.org/D135488



More information about the llvm-commits mailing list