/* 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, 2004, 2007, 2008
+ Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
#define UNKNOWN_LOCATION ((source_location) 0)
/* The location for declarations in "<built-in>" */
-#define BUILTINS_LOCATION ((source_location) 2)
+#define BUILTINS_LOCATION ((source_location) 1)
+
+/* line-map.c reserves RESERVED_LOCATION_COUNT to the user. Ensure
+ both UNKNOWN_LOCATION and BUILTINS_LOCATION fit into that. */
+extern char builtins_location_check[(BUILTINS_LOCATION
+ < RESERVED_LOCATION_COUNT) ? 1 : -1];
typedef struct GTY (())
{
int line;
int column;
+
+ /* In a system header?. */
+ bool sysp;
} expanded_location;
extern expanded_location expand_location (source_location);
This could be removed but it hardly seems worth the effort. */
typedef source_location location_t;
-struct file_stack
-{
- struct file_stack *next;
- location_t location;
-};
-
/* Top-level source file. */
extern const char *main_input_filename;
extern location_t input_location;
-extern void push_srcloc (location_t);
-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. */
-extern struct file_stack *input_file_stack;
-
-/* Incremented on each change to input_file_stack. */
-extern int input_file_stack_tick;
-
-/* The number of bits available for input_file_stack_tick. */
-#define INPUT_FILE_STACK_BITS 31
+#define in_system_header_at(LOC) ((expand_location (LOC)).sysp != 0)
+#define in_system_header (in_system_header_at (input_location))
#endif