[PATCH] D59687: [DebugInfo] Prologue inserter need to insert DW_OP_deref_size

Markus Lavin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 18 02:44:32 PDT 2019


markus added a comment.

> ! In D59687#1468571 <https://reviews.llvm.org/D59687#1468571>, @probinson wrote:
>  It sounds like you're trying to do this with aggregate types, and that won't work. Only base types (for DWARF 5) or address-like types (for DWARF <= 4) should end up on the stack.

Yes, but it is not intentional.

I guess that I did not consider that we could enter this place with a aggregate type object and an expression like `!DIExpression(DW_OP_plus_uconst, 56, DW_OP_stack_value)` ending with a `DW_OP_stack_value`. 
I wonder what kind of source code that corresponds to, something that takes the address 56 bytes into a aggregate? So maybe something like this.

  struct S {
    char bar[1024];
  }
  void foo(S s) {
    char *p = &s.bar[56];
    ...
  }

Having a bit of hard time minimizing the Chromium failure to something useful.


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

https://reviews.llvm.org/D59687





More information about the llvm-commits mailing list