diff options
author | gfunck <gfunck@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-09 08:48:43 +0000 |
---|---|---|
committer | gfunck <gfunck@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-09 08:48:43 +0000 |
commit | 5e79140626a9d7be3f384af82b3da0c6f0d12aaf (patch) | |
tree | 2b2f237168b3048e8f7a77942d33aaf369c7cae0 /libcpp | |
parent | 3f7685cdb9aca9d689f73e53baccfbcfbf043669 (diff) | |
download | ppe42-gcc-5e79140626a9d7be3f384af82b3da0c6f0d12aaf.tar.gz ppe42-gcc-5e79140626a9d7be3f384af82b3da0c6f0d12aaf.zip |
libcpp/
PR preprocessor/33919
* files.c (_cpp_get_file_name): New. Implement file name
access function.
* internal.h (_cpp_get_file_name): New prototype.
* macro.c (_cpp_builtin_macro_text): Call _cpp_get_file_name()
to use pfile->main_file in lieu of traversing INCLUDED_FROM chain.
gcc/testsuite/
PR preprocessor/33919
* gcc.dg/pr33919.c: New test.
* gcc.dg/pr33919-0.h: New test header file.
* gcc.dg/pr33919-1.h: Ditto.
* gcc.dg/pr33919-2.h: Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183003 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 9 | ||||
-rw-r--r-- | libcpp/files.c | 11 | ||||
-rw-r--r-- | libcpp/internal.h | 3 | ||||
-rw-r--r-- | libcpp/macro.c | 9 |
4 files changed, 24 insertions, 8 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index dfe18d08760..8a1eb05c5e5 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,12 @@ +2012-01-09 Gary Funck <gary@intrepid.com> + + PR preprocessor/33919 + * files.c (_cpp_get_file_name): New. Implement file name + access function. + * internal.h (_cpp_get_file_name): New prototype. + * macro.c (_cpp_builtin_macro_text): Call _cpp_get_file_name() + to use pfile->main_file in lieu of traversing INCLUDED_FROM chain. + 2012-01-03 Olivier Hainque <hainque@adacore.com> * system.h: Prior to #define, #undef fopen and freopen unconditionally. diff --git a/libcpp/files.c b/libcpp/files.c index fad8b75fe57..29ccf3b7013 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -1,7 +1,7 @@ /* Part of CPP library. File handling. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -1370,6 +1370,13 @@ _cpp_pop_file_buffer (cpp_reader *pfile, _cpp_file *file) } } +/* Return the file name associated with FILE. */ +const char * +_cpp_get_file_name (_cpp_file *file) +{ + return file->name; +} + /* Inteface to file statistics record in _cpp_file structure. */ struct stat * _cpp_get_file_stat (_cpp_file *file) diff --git a/libcpp/internal.h b/libcpp/internal.h index 7e2932a6035..5b3731bba1d 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -1,6 +1,6 @@ /* Part of CPP library. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, - 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -635,6 +635,7 @@ extern void _cpp_cleanup_files (cpp_reader *); extern void _cpp_pop_file_buffer (cpp_reader *, struct _cpp_file *); extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f); extern bool _cpp_read_file_entries (cpp_reader *, FILE *); +extern const char *_cpp_get_file_name (_cpp_file *); extern struct stat *_cpp_get_file_stat (_cpp_file *); /* In expr.c */ diff --git a/libcpp/macro.c b/libcpp/macro.c index d96b2631a86..32f99ca030a 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -1,7 +1,7 @@ /* Part of CPP library. (Macro and #define handling.) Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -278,10 +278,9 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) pfile->line_table->highest_line); else { - map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line); - while (! MAIN_FILE_P (map)) - map = INCLUDED_FROM (pfile->line_table, map); - name = ORDINARY_MAP_FILE_NAME (map); + name = _cpp_get_file_name (pfile->main_file); + if (!name) + abort (); } len = strlen (name); buf = _cpp_unaligned_alloc (pfile, len * 2 + 3); |