[clang] [clang] Fix for Assertion `(T->hasSignedIntegerRepresentation() || T->isSignedFixedPointType()) && "Unexpected signed integer or fixed point type"' failed. (PR #195945)
David Spickett via cfe-commits
cfe-commits at lists.llvm.org
Thu May 7 02:38:41 PDT 2026
================
@@ -525,13 +519,12 @@ Bug Fixes in This Version
- Clang now emits an error for friend declarations of lambda members. (#GH26540)
- Fixed a crash caused by lambda capture handling in delayed default arguments. (#GH176534)
- Fixed a crash when parsing invalid ``static_assert`` declarations with string-literal messages (#GH187690).
+- Fixed an assert/crash in ``__builtin_va_arg`` when the argument type is an enum without a correspoding signed type (#GH191698).
----------------
DavidSpickett wrote:
I haven't reproduced the bug myself but I think users would think of this purely as a crash so you can say "a crash" rather than "assert/crash". You're not wrong to say that but most people won't care that the assert was the cause.
Fix the spelling of:
correspoding -> corresponding
Can you explain a bit more what corresponding means here?
Does it mean that the crash happened when you have an enum with a underlying type that doesn't have an equivalent signed type?
So looking at the test case, I see `char16_t` and I assume there is no `char16_signed_t`.
In which case I would expand the wording a bit:
> when the argument type is an enum whose underlying type does not have a corresponding signed type
I haven't read the standards but I think the type of the enum is the enum itself, then there's the underlying type and the underlying type is the key here.
https://github.com/llvm/llvm-project/pull/195945
More information about the cfe-commits
mailing list