104 lines
3.6 KiB
Diff
104 lines
3.6 KiB
Diff
2011-01-18 Tom Tromey <tromey@redhat.com>
|
|
|
|
* c-parser.c (disable_extension_diagnostics): Save
|
|
warn_overlength_strings.
|
|
(restore_extension_diagnostics): Restore warn_overlength_strings.
|
|
|
|
* gcc.dg/Woverlength-strings-pedantic-c89-ext.c: New file.
|
|
* gcc.dg/Woverlength-strings-pedantic-c90-ext.c: New file.
|
|
* gcc.dg/Woverlength-strings-pedantic-c99-ext.c: New file.
|
|
|
|
--- gcc/c-parser.c (revision 168933)
|
|
+++ gcc/c-parser.c (working copy)
|
|
@@ -1045,13 +1045,15 @@
|
|
| (warn_traditional << 2)
|
|
| (flag_iso << 3)
|
|
| (warn_long_long << 4)
|
|
- | (warn_cxx_compat << 5));
|
|
+ | (warn_cxx_compat << 5)
|
|
+ | (warn_overlength_strings << 6));
|
|
cpp_opts->cpp_pedantic = pedantic = 0;
|
|
warn_pointer_arith = 0;
|
|
cpp_opts->cpp_warn_traditional = warn_traditional = 0;
|
|
flag_iso = 0;
|
|
cpp_opts->cpp_warn_long_long = warn_long_long = 0;
|
|
warn_cxx_compat = 0;
|
|
+ warn_overlength_strings = 0;
|
|
return ret;
|
|
}
|
|
|
|
@@ -1067,6 +1069,7 @@
|
|
flag_iso = (flags >> 3) & 1;
|
|
cpp_opts->cpp_warn_long_long = warn_long_long = (flags >> 4) & 1;
|
|
warn_cxx_compat = (flags >> 5) & 1;
|
|
+ warn_overlength_strings = (flags >> 6) & 1;
|
|
}
|
|
|
|
/* Possibly kinds of declarator to parse. */
|
|
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c (revision 0)
|
|
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c (revision 0)
|
|
@@ -0,0 +1,19 @@
|
|
+/* -Woverlength-strings complains about string constants which are too long
|
|
+ for the C standard's "minimum maximum" limits. It is off by default,
|
|
+ but implied by -pedantic. */
|
|
+
|
|
+/* { dg-options "-std=c89 -pedantic" } */
|
|
+
|
|
+#define TEN "xxxxxxxxxx"
|
|
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
|
|
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
|
|
+
|
|
+/* C89's minimum-maximum is 509. */
|
|
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
|
|
+
|
|
+/* C99's minimum-maximum is 4095. */
|
|
+const char x4096[] = __extension__
|
|
+ THO THO THO THO /* 4000 */
|
|
+ TEN TEN TEN TEN TEN /* 4050 */
|
|
+ TEN TEN TEN TEN /* 4090 */
|
|
+ "123456";
|
|
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c (revision 0)
|
|
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c (revision 0)
|
|
@@ -0,0 +1,19 @@
|
|
+/* -Woverlength-strings complains about string constants which are too long
|
|
+ for the C standard's "minimum maximum" limits. It is off by default,
|
|
+ but implied by -pedantic. */
|
|
+
|
|
+/* { dg-options "-std=c90 -pedantic" } */
|
|
+
|
|
+#define TEN "xxxxxxxxxx"
|
|
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
|
|
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
|
|
+
|
|
+/* C89's minimum-maximum is 509. */
|
|
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
|
|
+
|
|
+/* C99's minimum-maximum is 4095. */
|
|
+const char x4096[] = __extension__
|
|
+ THO THO THO THO /* 4000 */
|
|
+ TEN TEN TEN TEN TEN /* 4050 */
|
|
+ TEN TEN TEN TEN /* 4090 */
|
|
+ "123456";
|
|
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c (revision 0)
|
|
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c (revision 0)
|
|
@@ -0,0 +1,19 @@
|
|
+/* -Woverlength-strings complains about string constants which are too long
|
|
+ for the C standard's "minimum maximum" limits. It is off by default,
|
|
+ but implied by -pedantic. */
|
|
+
|
|
+/* { dg-options "-std=c99 -pedantic" } */
|
|
+
|
|
+#define TEN "xxxxxxxxxx"
|
|
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
|
|
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
|
|
+
|
|
+/* C89's minimum-maximum is 509. */
|
|
+const char x510[] = HUN HUN HUN HUN HUN TEN;
|
|
+
|
|
+/* C99's minimum-maximum is 4095. */
|
|
+const char x4096[] = __extension__
|
|
+ THO THO THO THO /* 4000 */
|
|
+ TEN TEN TEN TEN TEN /* 4050 */
|
|
+ TEN TEN TEN TEN /* 4090 */
|
|
+ "123456";
|