Blame cpp-test/test-t/e_intmax.c

Packit Service 8bf002
/* e_intmax.c:  Overflow of constant expression in #if directive.    */
Packit Service 8bf002
Packit Service 8bf002
/* { dg-do preprocess } */
Packit Service 8bf002
/* { dg-options "-std=c99 -pedantic-errors -w" } */
Packit Service 8bf002
Packit Service 8bf002
#define	INTMAX_MAX	0x7FFFFFFFFFFFFFFF
Packit Service 8bf002
#define INTMAX_MIN	(-INTMAX_MAX-1)
Packit Service 8bf002
#define SHRT_MAX    0x7FFF
Packit Service 8bf002
Packit Service 8bf002
#if     INTMAX_MAX - INTMAX_MIN /* { dg-error "integer overflow in preprocessor expression| Result of \"-\" is out of range" } */
Packit Service 8bf002
#endif
Packit Service 8bf002
#if     INTMAX_MAX + 1 > SHRT_MAX   /* { dg-error "integer overflow in preprocessor expression| Result of \"\\+\" is out of range" } */
Packit Service 8bf002
#endif
Packit Service 8bf002
#if     INTMAX_MIN - 1  /* { dg-error "integer overflow in preprocessor expression| Result of \"-\" is out of range" } */
Packit Service 8bf002
#endif
Packit Service 8bf002
#if     INTMAX_MAX * 2  /* { dg-error "integer overflow in preprocessor expression| Result of \"\\*\" is out of range" } */
Packit Service 8bf002
#endif
Packit Service 8bf002