[preprocessor] Popping "" file names
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg02069.html New # semantics for popping to "" name. libcpp/ * directives.c (do_linemarker): Popping to "" name means get the name from the include stack.. From-SVN: r275457
This commit is contained in:
parent
aff342a3c1
commit
400b8274e6
4 changed files with 43 additions and 3 deletions
|
@ -1,3 +1,7 @@
|
|||
2019-09-06 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* c-c++-common/cpp/line-1.c: New.
|
||||
|
||||
2019-09-06 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR c++/91125
|
||||
|
|
20
gcc/testsuite/c-c++-common/cpp/line-1.c
Normal file
20
gcc/testsuite/c-c++-common/cpp/line-1.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
/* { dg-do preprocess } */
|
||||
/* { dg-additional-options -Wno-pedantic } */
|
||||
|
||||
main-1 __FILE__
|
||||
|
||||
# 7 "inner.h" 1
|
||||
inner-1 __FILE__
|
||||
# 9 "inside.h" 1
|
||||
inside-1 __FILE__
|
||||
# 11 "" 2
|
||||
inner-2 __FILE__
|
||||
#13 "" 2
|
||||
main-2 __FILE__
|
||||
|
||||
|
||||
/* { dg-final { scan-file line-1.i "main-1 \"\[^\n]*line-1.c\"\n" } } */
|
||||
/* { dg-final { scan-file line-1.i "main-2 \"\[^\n]*line-1.c\"\n" } } */
|
||||
/* { dg-final { scan-file line-1.i "inner-1 \"inner.h\"\n" } } */
|
||||
/* { dg-final { scan-file line-1.i "inner-2 \"inner.h\"\n" } } */
|
||||
/* { dg-final { scan-file line-1.i "inside-1 \"inside.h\"\n" } } */
|
|
@ -1,3 +1,10 @@
|
|||
2019-08-30 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
New # semantics for popping to "" name.
|
||||
libcpp/
|
||||
* directives.c (do_linemarker): Popping to "" name means get the
|
||||
name from the include stack..
|
||||
|
||||
2019-09-05 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR preprocessor/91639
|
||||
|
|
|
@ -1088,9 +1088,17 @@ do_linemarker (cpp_reader *pfile)
|
|||
map = LINEMAPS_LAST_ORDINARY_MAP (line_table);
|
||||
const line_map_ordinary *from
|
||||
= linemap_included_from_linemap (line_table, map);
|
||||
if (MAIN_FILE_P (map)
|
||||
|| (from
|
||||
&& filename_cmp (ORDINARY_MAP_FILE_NAME (from), new_file) != 0))
|
||||
|
||||
if (!from)
|
||||
/* Not nested. */;
|
||||
else if (!new_file[0])
|
||||
/* Leaving to "" means fill in the popped-to name. */
|
||||
new_file = ORDINARY_MAP_FILE_NAME (from);
|
||||
else if (filename_cmp (ORDINARY_MAP_FILE_NAME (from), new_file) != 0)
|
||||
/* It's the wrong name, Grommit! */
|
||||
from = NULL;
|
||||
|
||||
if (!from)
|
||||
{
|
||||
cpp_warning (pfile, CPP_W_NONE,
|
||||
"file \"%s\" linemarker ignored due to "
|
||||
|
@ -1098,6 +1106,7 @@ do_linemarker (cpp_reader *pfile)
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Compensate for the increment in linemap_add that occurs in
|
||||
_cpp_do_file_change. We're currently at the start of the line
|
||||
*following* the #line directive. A separate location_t for this
|
||||
|
|
Loading…
Add table
Reference in a new issue