aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-07-10 18:49:24 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-07-10 18:49:24 +0200
commitc26302d5351c07a12a5c434f392a5df89381dd8e (patch)
treefb33b01daeb32c3b1c99c9c4f1501ea19669801f /gcc
parentdfeadaa00be8251addff242849f6165ea9ee480c (diff)
downloadgcc-c26302d5351c07a12a5c434f392a5df89381dd8e.zip
gcc-c26302d5351c07a12a5c434f392a5df89381dd8e.tar.gz
gcc-c26302d5351c07a12a5c434f392a5df89381dd8e.tar.bz2
c-ppoutput.c (scan_translation_unit): Call account_for_newlines for all CPP_TOKEN_FLD_STR tokens, not just CPP_COMMENT.
* c-ppoutput.c (scan_translation_unit): Call account_for_newlines for all CPP_TOKEN_FLD_STR tokens, not just CPP_COMMENT. * include/cpplib.h (cpp_token_val_index): Change parameter type to const cpp_token *. * lex.c (cpp_token_val_index): Likewise. * c-c++-common/raw-string-18.c: New test. * c-c++-common/raw-string-19.c: New test. From-SVN: r200878
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ppoutput.c6
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/c-c++-common/raw-string-18.c21
-rw-r--r--gcc/testsuite/c-c++-common/raw-string-19.c22
5 files changed, 56 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 0506e55..1211fcc 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * c-ppoutput.c (scan_translation_unit): Call account_for_newlines
+ for all CPP_TOKEN_FLD_STR tokens, not just CPP_COMMENT.
+
2013-07-10 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57869
diff --git a/gcc/c-family/c-ppoutput.c b/gcc/c-family/c-ppoutput.c
index 4a15346..03b8817 100644
--- a/gcc/c-family/c-ppoutput.c
+++ b/gcc/c-family/c-ppoutput.c
@@ -251,7 +251,11 @@ scan_translation_unit (cpp_reader *pfile)
cpp_output_token (token, print.outf);
}
- if (token->type == CPP_COMMENT)
+ /* CPP_COMMENT tokens and raw-string literal tokens can
+ have embedded new-line characters. Rather than enumerating
+ all the possible token types just check if token uses
+ val.str union member. */
+ if (cpp_token_val_index (token) == CPP_TOKEN_FLD_STR)
account_for_newlines (token->val.str.text, token->val.str.len);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 520818f..c32ac84 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -8,6 +8,9 @@
2013-07-10 Jakub Jelinek <jakub@redhat.com>
+ * c-c++-common/raw-string-18.c: New test.
+ * c-c++-common/raw-string-19.c: New test.
+
PR preprocessor/57757
* g++.dg/cpp/paste1.C: New test.
* g++.dg/cpp/paste2.C: New test.
diff --git a/gcc/testsuite/c-c++-common/raw-string-18.c b/gcc/testsuite/c-c++-common/raw-string-18.c
new file mode 100644
index 0000000..8d4381d
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/raw-string-18.c
@@ -0,0 +1,21 @@
+/* PR preprocessor/57824 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -fdump-tree-optimized-lineno" { target c } } */
+/* { dg-options "-std=c++11 -fdump-tree-optimized-lineno" { target c++ } } */
+
+const char x[] = R"(
+abc
+def
+ghi
+)";
+
+int
+main ()
+{
+ extern void foo (); foo ();
+ return 0;
+}
+
+/* Verify call to foo is on line 15. */
+/* { dg-final { scan-tree-dump ": 15\[]:]\[^\n\r]*foo" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/c-c++-common/raw-string-19.c b/gcc/testsuite/c-c++-common/raw-string-19.c
new file mode 100644
index 0000000..08121a8
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/raw-string-19.c
@@ -0,0 +1,22 @@
+/* PR preprocessor/57824 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -fdump-tree-optimized-lineno -save-temps" { target c } } */
+/* { dg-options "-std=c++11 -fdump-tree-optimized-lineno -save-temps" { target c++ } } */
+
+const char x[] = R"(
+abc
+def
+ghi
+)";
+
+int
+main ()
+{
+ extern void foo (); foo ();
+ return 0;
+}
+
+/* Verify call to foo is on line 15. */
+/* { dg-final { scan-tree-dump ": 15\[]:]\[^\n\r]*foo" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+/* { dg-final { cleanup-saved-temps } } */