libcpp: Fix up -fdirectives-only handling of // comments on last line not terminated with newline [PR100646]
As can be seen on the testcases, before the -fdirectives-only preprocessing rewrite the preprocessor would assume // comments are terminated by the end of file even when newline wasn't there, but now we error out. The following patch restores the previous behavior. 2021-05-20 Jakub Jelinek <jakub@redhat.com> PR preprocessor/100646 * lex.c (cpp_directive_only_process): Treat end of file as termination for !is_block comments. * gcc.dg/cpp/pr100646-1.c: New test. * gcc.dg/cpp/pr100646-2.c: New test.
This commit is contained in:
parent
75ab8b4829
commit
d15a2d261b
3 changed files with 14 additions and 2 deletions
5
gcc/testsuite/gcc.dg/cpp/pr100646-1.c
Normal file
5
gcc/testsuite/gcc.dg/cpp/pr100646-1.c
Normal file
|
@ -0,0 +1,5 @@
|
|||
/* PR preprocessor/100646 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-fdirectives-only -save-temps -std=c17" } */
|
||||
int main () { return 0; }
|
||||
// Not newline terminated
|
6
gcc/testsuite/gcc.dg/cpp/pr100646-2.c
Normal file
6
gcc/testsuite/gcc.dg/cpp/pr100646-2.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
/* PR preprocessor/100646 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-fdirectives-only -save-temps -std=c17" } */
|
||||
int main () { return 0; }
|
||||
/* { dg-warning "backslash-newline at end of file" "" { target *-*-* } .+1 } */
|
||||
// Not newline terminated\
|
|
@ -4480,8 +4480,9 @@ cpp_directive_only_process (cpp_reader *pfile,
|
|||
break;
|
||||
}
|
||||
}
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, sloc, 0,
|
||||
"unterminated comment");
|
||||
if (pos < limit || is_block)
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, sloc, 0,
|
||||
"unterminated comment");
|
||||
done_comment:
|
||||
lwm = pos;
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue