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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits