c: Avoid ICE with _BitInt(N) : 0 bitfield [PR113740]
commit194ab79b580b69554124cf8257b19c957690a8a8
authorJakub Jelinek <jakub@redhat.com>
Mon, 5 Feb 2024 17:53:59 +0000 (5 18:53 +0100)
committerJakub Jelinek <jakub@redhat.com>
Mon, 5 Feb 2024 17:53:59 +0000 (5 18:53 +0100)
treed15717fc3151a140c35c598931f256f0b0adf602
parent8ca585e56c1d6837f96ddd88c13ed1e815c74f93
c: Avoid ICE with _BitInt(N) : 0 bitfield [PR113740]

finish_struct already made sure not to call build_bitint_type for
signed _BitInt(2) : 1;
or
signed _BitInt(2) : 0;
bitfields (but instead build a zero precision integral type,
we remove it later), this patch makes sure we do it also for
unsigned _BitInt(1) : 0;
because of the build_bitint_type assertion that precision is
>= (unsigned ? 1 : 2).

2024-02-05  Jakub Jelinek  <jakub@redhat.com>

PR c/113740
* c-decl.cc (finish_struct): Only use build_bitint_type if
bit-field has width larger or equal to minimum _BitInt
precision.

* gcc.dg/bitint-85.c: New test.
gcc/c/c-decl.cc
gcc/testsuite/gcc.dg/bitint-85.c [new file with mode: 0644]