[Lldb-commits] [PATCH] D101237: [lldb] Fix [[no_unique_address]] and libstdc++ 11's std::unique_ptr

Shafik Yaghmour via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Apr 26 18:33:08 PDT 2021


shafik added a comment.

I think @dblaikie original idea of adding a DWARF attribute for this case is the right way to go here. AFAICT this will change the answer to basic questions such as what size a `struct` is and this will likely lead to confusion from our users who will expect the answers in expression parsing to match what they are seeing elsewhere e.g.:

  struct X {
      int i;
      [[no_unique_address]] Empty e;
  };
   
  struct X2 {
      int i;
      Empty e;
  };
   
  struct Z {
      char c;
      [[no_unique_address]] Empty e1, e2;
  };
  
  struct Z2 {
      char c;
      Empty e1, e2;
  };
  
  
  struct W {
      char c[2];
      [[no_unique_address]] Empty e1, e2;
  };
  
  struct W2 {
      char c[2];
      Empty e1, e2;
  };
  
  
  int main()
  {
      std::cout << sizeof(Empty) << "\n"
                << "X: " << sizeof(X) << "\n"
                << "X2: " << sizeof(X2) << "\n"
                << "Z: " << sizeof(Z) << "\n"
                << "Z2: " << sizeof(Z2) << "\n"
                << "W: " << sizeof(W) << "\n"
                << "W2: " << sizeof(W2) << "\n";
    
  }

See godbolt <https://godbolt.org/z/qYzWeEh7n> which shows this result:

  1
  X: 4
  X2: 8
  Z: 2
  Z2: 3
  W: 3
  W2: 4


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101237



More information about the lldb-commits mailing list