diff --git a/gcc/testsuite/c-c++-common/cpp/pr96323.c b/gcc/testsuite/c-c++-common/cpp/pr96323.c new file mode 100644 index 000000000000..7a8edff27ccf --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pr96323.c @@ -0,0 +1,8 @@ +/* PR preprocessor/96323 */ +/* { dg-do preprocess } */ +/* { dg-options "-std=gnu99 -Wno-c++-compat -trigraphs" { target c } } */ +/* { dg-options "-std=c++0x" { target c++ } } */ +/* { dg-error "invalid new-line in raw string delimiter" "" { target *-*-* } .+2 } */ +/* { dg-warning "missing terminating . character" "" { target *-*-* } .+2 } */ +const char tu[] = R"a"; +const char tua[] = "(R)a"; diff --git a/libcpp/lex.c b/libcpp/lex.c index 5d94882abe8a..9aec9e0bd04e 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -1885,7 +1885,8 @@ lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base) the best failure mode. */ prefix_len = 0; } - continue; + if (c != '\n') + continue; } if (phase != PHASE_NONE)