[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:
Nathan Sidwell 2019-09-06 12:54:19 +00:00 committed by Nathan Sidwell
parent aff342a3c1
commit 400b8274e6
4 changed files with 43 additions and 3 deletions

View File

@ -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

View 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" } } */

View File

@ -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

View File

@ -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