From c7f9c0b9835fc77208bddffec0ba71d33fb425fa Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sat, 18 Apr 2009 18:36:28 +0100 Subject: re PR preprocessor/39646 (__FILE__ breaks for empty file name) libcpp: PR preprocessor/39646 * include/line-map.h (enum lc_reason): Add LC_RENAME_VERBATIM. * line-map.c (linemap_add): Handle LC_RENAME_VERBATIM. * directives.c (do_line, do_linemarker): Use LC_RENAME_VERBATIM in place of LC_RENAME. gcc/testsuite: * gcc.dg/cpp/line8.c: New test. From-SVN: r146319 --- libcpp/line-map.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'libcpp/line-map.c') diff --git a/libcpp/line-map.c b/libcpp/line-map.c index cce699f..553cc2a 100644 --- a/libcpp/line-map.c +++ b/libcpp/line-map.c @@ -109,9 +109,12 @@ linemap_add (struct line_maps *set, enum lc_reason reason, map = &set->maps[set->used]; - if (to_file && *to_file == '\0') + if (to_file && *to_file == '\0' && reason != LC_RENAME_VERBATIM) to_file = ""; + if (reason == LC_RENAME_VERBATIM) + reason = LC_RENAME; + /* If we don't keep our line maps consistent, we can easily segfault. Don't rely on the client to do it for us. */ if (set->depth == 0) -- cgit v1.1