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.
This patch does that.
2022-10-19  Jakub Jelinek  <jakub@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.
          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;