New testcase for cpp, written by Kaveh Ghazi <ghazi@caip.rutgers.edu>
authorZack Weinberg <zack@gcc.gnu.org>
Wed, 24 Feb 1999 11:09:08 +0000 (11:09 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Wed, 24 Feb 1999 11:09:08 +0000 (11:09 +0000)
From-SVN: r25398

gcc/testsuite/gcc.dg/cpp-if3.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.dg/cpp-if3.c b/gcc/testsuite/gcc.dg/cpp-if3.c
new file mode 100644 (file)
index 0000000..2d5b676
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do preprocess } */
+/* { dg-options -pedantic-errors } */
+
+#define U_MAX 4294967295U
+#define ULL_MAX 18446744073709551615ULL
+#define LL_MAX 9223372036854775807LL
+#define LL_MIN (-LL_MAX-1)
+
+/* Check simple truncation. */
+#if U_MAX == ULL_MAX || LL_MIN == 0 || LL_MAX == -1
+#error "simple truncation"  /* { dg-bogus "trunc" "simple truncation" } */
+#endif
+
+/* Check left/right shifting with all bits set and with one bit set. */
+#if !(~0ULL >> 63) || !(~0ULL << 63) || !(~0LL >> 63) || !(~0LL << 63) || \
+  !(LL_MIN >> 63) || !(1LL << 63) || !(ULL_MAX >> 63) || !(1ULL << 63)
+#error "bit shift truncation" /* { dg-bogus "trunc" "bit shift truncation" } */
+#endif
+
+/* Check math expressions. */
+#if (2ULL * U_MAX < U_MAX) || (1ULL + U_MAX < U_MAX)
+#error "math truncation"  /* { dg-bogus "trunc" "math truncation" } */
+#endif