Without this patch a DW_ATE_complex_float encoding trips an assertion in DebugHandlerBase::isUnsignedDIType. The assertion message "Unsupported encoding" possibly indicates that either the encoding either truly isn't supported or hasn't yet had support added.
By adding a case to the assert for DW_ATE_complex_float it becomes supported, behaving in the same way as the already supported DW_ATE_float type (return false), which I think makes sense.
That resolves this issue mentioned in D146987.
Note: For the reported reproducer:
#include <complex.h> int main() { long double complex r1; }
The assertion isn't tripped without assignment tracking because instcombine deletes everything, including the dbg.declare, without recovering any location information. Whereas with assignment tracking we track a zeroing memset that is emitted by clang.
Whether are the other Encoding == xxx tested? Is it possible to group the DW_ATE_complex_float test with those test files?