[Lldb-commits] [clang] [lldb] [clang][RecordLayoutBuilder] Be stricter about inferring packed-ness in ExternalLayouts (PR #97443)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Mon Dec 23 04:33:16 PST 2024
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
More information about the lldb-commits
mailing list