Hi!

On Wed, Oct 19, 2022 at 02:57:59PM +0000, Joseph Myers wrote:
> I think the type checked for e5a should be conditional on __LONG_MAX__ > 
> __INT_MAX__; everything else there should be OK regardless.

So like this?
Tested on x86_64-linux with -m32 and -m64, ok for trunk?

2022-10-19  Jakub Jelinek  <ja...@redhat.com>

        PR c/107311
        * gcc.dg/c2x-enum-1.c (enum e5): Expect e5a type inside of
        enum to be int rather than long if long isn't wider than int.

--- gcc/testsuite/gcc.dg/c2x-enum-1.c.jj        2022-10-19 01:15:21.025186231 
+0200
+++ gcc/testsuite/gcc.dg/c2x-enum-1.c   2022-10-19 18:19:45.215215713 +0200
@@ -82,7 +82,12 @@ enum e5 { e5a = __LONG_MAX__,
          e5b, e5c, e5d = ((typeof (e5b)) -1) < 0,
          e5e = (unsigned long) -1,
          e5f, e5g = ((typeof (e5e)) -1) > 0,
-         TYPE_CHECK (e5a, long), TYPE_CHECK (e5e, unsigned long) };
+#if __LONG_MAX__ > __INT_MAX__
+         TYPE_CHECK (e5a, long),
+#else
+         TYPE_CHECK (e5a, int),
+#endif
+         TYPE_CHECK (e5e, unsigned long) };
 extern enum e5 e5v;
 extern typeof (e5a) e5v;
 extern typeof (e5b) e5v;


        Jakub

Reply via email to