/* PR c/102989 */ /* { dg-do compile { target bitint } } */ /* { dg-options "-std=gnu23" } */ #define expr_has_type(e, t) _Generic (e, default : 0, t : 1) void foo (_Complex int ci, _Complex long long cl) { _BitInt(__SIZEOF_INT__ * __CHAR_BIT__ - 1) bi = 0wb; _BitInt(__SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 1) bl = 0wb; static_assert (expr_has_type (ci + bi, _Complex int)); static_assert (expr_has_type (cl + bl, _Complex long long)); static_assert (expr_has_type (bi + ci, _Complex int)); static_assert (expr_has_type (bl + cl, _Complex long long)); }