diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-07-10 18:52:19 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-07-10 18:52:19 +0200 |
commit | d5e48350b40fcec6459dceef282f2ecf6eba3201 (patch) | |
tree | 8a55834621f16e95b2d8489959ff64d7803cc254 /libcpp | |
parent | c26302d5351c07a12a5c434f392a5df89381dd8e (diff) | |
download | gcc-d5e48350b40fcec6459dceef282f2ecf6eba3201.zip gcc-d5e48350b40fcec6459dceef282f2ecf6eba3201.tar.gz gcc-d5e48350b40fcec6459dceef282f2ecf6eba3201.tar.bz2 |
re PR preprocessor/57824 (Raw string literals not handled correctly in macro arguments or deferred pragmas)
PR preprocessor/57824
* lex.c (lex_raw_string): Allow reading new-lines if
in_deferred_pragma or if parsing_args and there is still
data in the current buffer.
* c-c++-common/raw-string-17.c: New test.
* c-c++-common/gomp/pr57824.c: New test.
From-SVN: r200879
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 5 | ||||
-rw-r--r-- | libcpp/lex.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 195d728..9213232 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,5 +1,10 @@ 2013-07-10 Jakub Jelinek <jakub@redhat.com> + PR preprocessor/57824 + * lex.c (lex_raw_string): Allow reading new-lines if + in_deferred_pragma or if parsing_args and there is still + data in the current buffer. + * include/cpplib.h (cpp_token_val_index): Change parameter type to const cpp_token *. * lex.c (cpp_token_val_index): Likewise. diff --git a/libcpp/lex.c b/libcpp/lex.c index 84e2af6..fc89baf 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -1543,8 +1543,8 @@ lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base, else if (c == '\n') { if (pfile->state.in_directive - || pfile->state.parsing_args - || pfile->state.in_deferred_pragma) + || (pfile->state.parsing_args + && pfile->buffer->next_line >= pfile->buffer->rlimit)) { cur--; type = CPP_OTHER; |