erichkeane wrote:
> > However, will this actually work in practice in the debugger? If not,
> > perhaps we should limit to just integer and enumeration types for now,
> > leaving the extension for the future.
>
> I composed an example of that:
>
> ```c++
> struct A {
> short a1;
> short a2;
> };
>
> struct B {
> [[clang::preferred_type(A)]] unsigned b1 : 32 = 0x000F'000C;
> };
>
> int main()
> {
> B b;
> return b.b1;
> }
> ```
>
> Nightly build of LLDB from apt.llvm.org handles it just fine:
>
> ```
> Process 2755547 stopped
> * thread #1, name = 'test-preferred-', stop reason = step in
> frame #0: 0x0000555555555148 test-preferred-type`main at test.cxx:13:14
> 10 int main()
> 11 {
> 12 B b;
> -> 13 return b.b1;
> 14 }
> (lldb) v -T
> (B) b = {
> (A:32) b1 = {
> (short) a1 = 12
> (short) a2 = 15
> }
> }
> ```
>
> @erichkeane Would you still prefer restricting type argument to integral and
> enumeration types?
I think that is the least dangerous, but the `requireCompleteType` isn't awful
(and I can do a disagree & commit on). I think it gets goofy when the sizes
don't match with floating point/complex/etc, but I also see "you got what you
asked for!" as being a reasonable defense to that.
https://github.com/llvm/llvm-project/pull/69104
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits