Michael137 wrote:

> FWIW, I came across another no_unique_address-related crash today:
> 
> ```
> $ cat a.cc
> struct S {
> private:
>   int i;
>   short s;
> };
> static_assert(sizeof(S) == 8);
> 
> struct T {
>   [[no_unique_address]] S s;
>   char c;
> };
> static_assert(sizeof(T) == 8);
> 
> T t;
> $ clang++ -c -o /tmp/a.out /tmp/a.cc -g
> $ lldb /tmp/a.out -o "expr t" -x
> (lldb) target create "/tmp/a.out"
> Current executable set to '/tmp/a.out' (x86_64).
> (lldb) expr t
> assertion failed at clang/lib/CodeGen/CGRecordLayoutBuilder.cpp:960 in void 
> (anonymous namespace)::CGRecordLowering::checkBitfieldClipping(bool) const: 
> M.Offset >= Tail && "Bitfield access unit is not clipped"
> ...
> ```
> 
> I was hoping this PR would fix it, but it doesn't appear to help.

Hmmm interesting, yea that looks more like something that 
https://github.com/llvm/llvm-project/pull/96422 should've addressed. Though 
this is a special case where the attribute is applied to a non-empty type. 
Would need to step through the `CGRecordLayoutBuilder` to see why Clang 
believes the offsets from DWARF aren't correct.

https://github.com/llvm/llvm-project/pull/97443
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to