Another test for preprocessor corner cases
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2000 04:12:52 +0000 (04:12 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2000 04:12:52 +0000 (04:12 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31558 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/gcc.dg/lineno.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.dg/lineno.c b/gcc/testsuite/gcc.dg/lineno.c
new file mode 100644 (file)
index 0000000..dc5bf81
--- /dev/null
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-Wwrite-strings" } */ 
+/* The purpose of this test is to ensure that line numbers in diagnostics
+   are accurate after macros whose arguments contain newlines and are
+   substituted multiple times.  The semicolons are on separate lines because
+   #line can only correct numbering on line boundaries.  */
+#define one(x) x
+#define two(x) x x
+#define four(x) two(x) two(x)
+
+int
+main(void)
+{
+  char *A;
+
+  A = "text";          /* { dg-warning "discards qualifiers" "case zero" } */
+  A = one("text"
+         "text")
+       ;               /* { dg-warning "discards qualifiers" "case one" } */
+  A = two("text"
+         "text")
+       ;               /* { dg-warning "discards qualifiers" "case two" } */
+  A = four("text"
+          "text")
+       ;               /* { dg-warning "discards qualifiers" "case four" } */
+
+  return 0;
+}