expr: Handle BITINT_TYPE in count_type_elements [PR112881]

The following testcaser ICEs during gimplification, because
count_type_elements doesn't handle BITINT_TYPE.  It should handle it like
other integral types.

2023-12-07  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/112881
	* expr.cc (count_type_elements): Handle BITINT_TYPE like INTEGER_TYPE.

	* gcc.dg/bitint-50.c: New test.
This commit is contained in:
Jakub Jelinek 2023-12-07 09:47:16 +01:00
parent f74939bd53
commit e5489faf8e
2 changed files with 22 additions and 0 deletions

View file

@ -7021,6 +7021,7 @@ count_type_elements (const_tree type, bool for_ctor_p)
case REFERENCE_TYPE:
case NULLPTR_TYPE:
case OPAQUE_TYPE:
case BITINT_TYPE:
return 1;
case ERROR_MARK:

View file

@ -0,0 +1,21 @@
/* PR middle-end/112881 */
/* { dg-do compile { target bitint } } */
/* { dg-options "-O2 -std=c23" } */
struct S { _BitInt(64) b; };
struct S
foo (_BitInt(64) p)
{
return (struct S) { p };
}
#if __BITINT_MAXWIDTH__ >= 3924
struct T { _BitInt(3924) b; };
struct T
bar (_BitInt(3924) p)
{
return (struct T) { p };
}
#endif