c-parser.c (c_parser_asm_string_literal): Clear warn_overlength_strings.
authorTom Tromey <tromey@redhat.com>
Mon, 14 Mar 2011 18:01:10 +0000 (18:01 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Mon, 14 Mar 2011 18:01:10 +0000 (18:01 +0000)
gcc
* c-parser.c (c_parser_asm_string_literal): Clear
warn_overlength_strings.
gcc/testsuite
* gcc.dg/Woverlength-strings-pedantic-c90-asm.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c89-asm.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c99-asm.c: New file.

From-SVN: r170948

gcc/ChangeLog
gcc/c-parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c [new file with mode: 0644]

index f1a353c00fb24233c30f22c414eac6aaa94e5e0f..07aa11916bb09bf30a4567337ae5e7f70287639a 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-14  Tom Tromey  <tromey@redhat.com>
+
+       * c-parser.c (c_parser_asm_string_literal): Clear
+       warn_overlength_strings.
+
 2011-03-14  Tom Tromey  <tromey@redhat.com>
 
        * c-parser.c (disable_extension_diagnostics): Save
index 7b18827cfc634836e1bf81cca0832fd34a65f60d..33e7362baa00b35f2be8190776d1fef7dc52944d 100644 (file)
@@ -3264,6 +3264,8 @@ static tree
 c_parser_asm_string_literal (c_parser *parser)
 {
   tree str;
+  int save_flag = warn_overlength_strings;
+  warn_overlength_strings = 0;
   if (c_parser_next_token_is (parser, CPP_STRING))
     {
       str = c_parser_peek_token (parser)->value;
@@ -3281,6 +3283,7 @@ c_parser_asm_string_literal (c_parser *parser)
       c_parser_error (parser, "expected string literal");
       str = NULL_TREE;
     }
+  warn_overlength_strings = save_flag;
   return str;
 }
 
index 6afb96daadc0820a614004361e901d09f5b09634..be3157c222749b84dbdbe2656ff1b335da84ef74 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-14  Tom Tromey  <tromey@redhat.com>
+
+       * gcc.dg/Woverlength-strings-pedantic-c90-asm.c: New file.
+       * gcc.dg/Woverlength-strings-pedantic-c89-asm.c: New file.
+       * gcc.dg/Woverlength-strings-pedantic-c99-asm.c: New file.
+
 2011-03-14  Tom Tromey  <tromey@redhat.com>
 
        * gcc.dg/Woverlength-strings-pedantic-c89-ext.c: New file.
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
new file mode 100644 (file)
index 0000000..45373bc
--- /dev/null
@@ -0,0 +1,47 @@
+/* -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 "          "
+#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. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095.  */
+__asm__ (
+  THO THO THO THO     /* 4000 */
+  TEN TEN TEN TEN TEN /* 4050 */
+  TEN TEN TEN TEN     /* 4090 */
+  "123456");
+
+void
+f (void)
+{
+  /* C89's minimum-maximum is 509. */
+  __asm__ (HUN HUN HUN HUN HUN TEN);
+  __asm__ (HUN HUN HUN HUN HUN TEN : : );
+  __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+  /* C99's minimum-maximum is 4095.  */
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456");
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456" : : );
+  __asm__ goto (
+               THO THO THO THO     /* 4000 */
+               TEN TEN TEN TEN TEN /* 4050 */
+               TEN TEN TEN TEN     /* 4090 */
+               "123456" : : : : label);
+
+ label: ;
+}
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
new file mode 100644 (file)
index 0000000..b5523bc
--- /dev/null
@@ -0,0 +1,48 @@
+/* -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 "          "
+#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. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095.  */
+__asm__ (
+  THO THO THO THO     /* 4000 */
+  TEN TEN TEN TEN TEN /* 4050 */
+  TEN TEN TEN TEN     /* 4090 */
+  "123456");
+
+void
+f (void)
+{
+  /* C89's minimum-maximum is 509. */
+  __asm__ (HUN HUN HUN HUN HUN TEN);
+  __asm__ (HUN HUN HUN HUN HUN TEN : :);
+  __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+  /* C99's minimum-maximum is 4095.  */
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456");
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456" : :);
+  __asm__ goto (
+               THO THO THO THO     /* 4000 */
+               TEN TEN TEN TEN TEN /* 4050 */
+               TEN TEN TEN TEN     /* 4090 */
+               "123456" : : : : label);
+
+ label: ;
+}
+
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
new file mode 100644 (file)
index 0000000..8840e38
--- /dev/null
@@ -0,0 +1,48 @@
+/* -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 "          "
+#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. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095.  */
+__asm__ (
+  THO THO THO THO     /* 4000 */
+  TEN TEN TEN TEN TEN /* 4050 */
+  TEN TEN TEN TEN     /* 4090 */
+  "123456");
+
+void
+f (void)
+{
+  /* C89's minimum-maximum is 509. */
+  __asm__ (HUN HUN HUN HUN HUN TEN);
+  __asm__ (HUN HUN HUN HUN HUN TEN : :);
+  __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+  /* C99's minimum-maximum is 4095.  */
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456");
+  __asm__ (
+          THO THO THO THO     /* 4000 */
+          TEN TEN TEN TEN TEN /* 4050 */
+          TEN TEN TEN TEN     /* 4090 */
+          "123456" : :);
+  __asm__ goto (
+               THO THO THO THO     /* 4000 */
+               TEN TEN TEN TEN TEN /* 4050 */
+               TEN TEN TEN TEN     /* 4090 */
+               "123456" : : : : label);
+
+ label: ;
+}
+