X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Finput.h;h=2fea1a65c9b488cb4ed2c019c4a0c31dce72401a;hb=5e016dfc61b8e84dcbd0df9a4807394e1ca173bf;hp=7d08e11fc5a5a7918f4373ccfaec66db458db746;hpb=d21693b12d03ce87cfabffa5147e47c31e9ffe0a;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/input.h b/gcc/input.h index 7d08e11fc5a..2fea1a65c9b 100644 --- a/gcc/input.h +++ b/gcc/input.h @@ -1,6 +1,6 @@ /* Declarations for variables relating to reading the source file. Used by parsers, lexical analyzers, and error message routines. - Copyright (C) 1993, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc. This file is part of GCC. @@ -16,15 +16,40 @@ for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ +Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA. */ #ifndef GCC_INPUT_H #define GCC_INPUT_H -/* The data structure used to record a location in a translation unit. */ -/* Long-term, we want to get rid of this and typedef fileline location_t. */ -struct location_s GTY (()) +#include "line-map.h" +extern struct line_maps line_table; + +/* The location for declarations in "" */ +#define BUILTINS_LOCATION ((source_location) 2) + +#ifdef USE_MAPPED_LOCATION + +typedef struct +{ + /* The name of the source file involved. */ + const char *file; + + /* The line-location in the source file. */ + int line; + + int column; +} expanded_location; + +extern expanded_location expand_location (source_location); + +#define UNKNOWN_LOCATION ((source_location) 0) +typedef source_location location_t; /* deprecated typedef */ +typedef source_location source_locus; /* to be removed */ + +#else /* ! USE_MAPPED_LOCATION */ + +struct location_s GTY(()) { /* The name of the source file involved. */ const char *file; @@ -32,7 +57,16 @@ struct location_s GTY (()) /* The line-location in the source file. */ int line; }; + +typedef struct location_s expanded_location; typedef struct location_s location_t; +typedef location_t *source_locus; + +#define expand_location(FILELINE) (FILELINE) +extern location_t unknown_location; +#define UNKNOWN_LOCATION unknown_location + +#endif /* ! USE_MAPPED_LOCATION */ struct file_stack { @@ -44,8 +78,19 @@ struct file_stack extern const char *main_input_filename; extern location_t input_location; -#define input_line (input_location.line) -#define input_filename (input_location.file) +#ifdef USE_MAPPED_LOCATION +extern void push_srcloc (location_t); +#else /* ! USE_MAPPED_LOCATION */ +extern void push_srcloc (const char *name, int line); +#endif /* ! USE_MAPPED_LOCATION */ +extern void pop_srcloc (void); +extern void restore_input_file_stack (int); + +#define LOCATION_FILE(LOC) ((expand_location (LOC)).file) +#define LOCATION_LINE(LOC) ((expand_location (LOC)).line) + +#define input_line LOCATION_LINE(input_location) +#define input_filename LOCATION_FILE(input_location) /* Stack of currently pending input files. The line member is not accurate for the innermost file on the stack. */ @@ -54,7 +99,7 @@ extern struct file_stack *input_file_stack; /* Incremented on each change to input_file_stack. */ extern int input_file_stack_tick; -extern void push_srcloc (const char *name, int line); -extern void pop_srcloc (void); +/* The number of bits available for input_file_stack_tick. */ +#define INPUT_FILE_STACK_BITS 31 #endif