c: ICE with nullptr as case expression [PR108424]
commit0f85ae6591c92b161693073c0931c7ca1d5d0c5a
authorMarek Polacek <polacek@redhat.com>
Wed, 18 Jan 2023 19:51:59 +0000 (18 14:51 -0500)
committerMarek Polacek <polacek@redhat.com>
Wed, 18 Jan 2023 21:49:57 +0000 (18 16:49 -0500)
treeccbdeeb12858685e825db52f7c7f9e27d418d0df
parent33237e93d59ee7bb215cd5b726880bcbd679bb36
c: ICE with nullptr as case expression [PR108424]

In this ICE-on-invalid, we crash on

  gcc_assert (INTEGRAL_TYPE_P (type));

in perform_integral_promotions, because a nullptr is an INTEGER_CST,
but not INTEGRAL_TYPE_P, and check_case_value is only checking the
former.  In the test I'm testing other "shall be an integral constant
expression" contexts as well.

PR c/108424

gcc/c-family/ChangeLog:

* c-common.cc (check_case_value): Check INTEGRAL_TYPE_P.

gcc/testsuite/ChangeLog:

* gcc.dg/c2x-nullptr-6.c: New test.
gcc/c-family/c-common.cc
gcc/testsuite/gcc.dg/c2x-nullptr-6.c [new file with mode: 0644]