diff options
| author | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-15 17:31:32 +0000 |
|---|---|---|
| committer | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-15 17:31:32 +0000 |
| commit | b0057e95fbd739a367c67164d1107f5d955dfcd8 (patch) | |
| tree | 78eca888e2f4be9f6b0c5e4db6a69c5180d050c6 /gcc/fortran/gfortran.h | |
| parent | 1eb397b0a23e2a60bae64ee80c76f005199d807e (diff) | |
| download | ppe42-gcc-b0057e95fbd739a367c67164d1107f5d955dfcd8.tar.gz ppe42-gcc-b0057e95fbd739a367c67164d1107f5d955dfcd8.zip | |
PR fortran/13702
(Port from g95)
* gfortran.h (gfc_linebuf): New typedef.
(linebuf): Remove.
(gfc_file): Revamped, use new gfc_linebuf.
(locus): Revamped, use new types.
(gfc_current_file): Remove.
(gfc_current_form, gfc_source_file): New global variables.
* match.c (gfc_match_space, gfc_match_strings): Use
gfc_current_form to find source form.
* module.c (gfc_dump_module): Use gfc_source_file when printing
module header.
* error.c (show_locus, show_loci) Use new data structures to print
locus.
* scanner.c (first_file, first_duplicated_file, gfc_current_file):
Remove.
(file_head, current_file, gfc_current_form, line_head, line_tail,
gfc_current_locus1, gfc_source_file): New global variables.
(gfc_scanner_init1): Set new global variables.
(gfc_scanner_done1): Free new data structures.
(gfc_current_locus): Return pointer to gfc_current_locus1.
(gfc_set_locus): Set gfc_current_locus1.
(gfc_at_eof): Set new variables.
(gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt
to new locus structure.
(gfc_check_include): Remove.
(skip_free_comments, skip_fixed_comments): Use gfc_current_locus1.
(gfc_skip_comments): Use gfc_current_form, find locus with
gfc_current_locus1.
(gfc_next_char): Use gfc_current_form.
(gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1.
(load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix
comment formatting.
(get_file): New function.
(preprocessor_line, include_line): New functions.
(load_file): Move down, rewrite to match new data structures.
(gfc_new_file): Rewrite to match new data structures.
* parse.c (next_statement): Remove code which is now useless. Use
gfc_source_form and gfc_source_file where appropriate.
* trans-decl.c (gfc_get_label_decl): adapt to new data structures
when determining locus of frontend code.
* trans-io.c (set_error_locus): Same.
* trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise.
* lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from
preprocessor flags.
(all): Add missing initializers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81888 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/gfortran.h')
| -rw-r--r-- | gcc/fortran/gfortran.h | 70 |
1 files changed, 33 insertions, 37 deletions
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 627eb8df96b..498e63b6c9b 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -413,35 +413,40 @@ typedef struct symbol_attribute; -typedef struct -{ - char *nextc; - int line; /* line within the lp structure */ - struct linebuf *lp; - struct gfc_file *file; -} -locus; +/* The following three structures are used to identify a location in + the sources. + + gfc_file is used to maintain a tree of the source files and how + they include each other -/* The linebuf structure deserves some explanation. This is the - primary structure for holding lines. A source file is stored in a - singly linked list of these structures. Each structure holds an - integer number of lines. The line[] member is actually an array of - pointers that point to the NULL-terminated lines. This list grows - upwards, and the actual lines are stored at the top of the - structure and grow downward. Each structure is packed with as many - lines as it can hold, then another linebuf is allocated. */ + gfc_linebuf holds a single line of source code and information + which file it resides in -/* Chosen so that sizeof(linebuf) = 4096 on most machines */ -#define LINEBUF_SIZE 4080 + locus point to the sourceline and the character in the source + line. +*/ -typedef struct linebuf +typedef struct gfc_file { - int start_line, lines; - struct linebuf *next; - char *line[1]; - char buf[LINEBUF_SIZE]; -} -linebuf; + struct gfc_file *included_by, *next, *up; + int inclusion_line, line; + char *filename; +} gfc_file; + +typedef struct gfc_linebuf +{ + int linenum; + struct gfc_file *file; + struct gfc_linebuf *next; + + char line[]; +} gfc_linebuf; + +typedef struct +{ + char *nextc; + gfc_linebuf *lb; +} locus; #include <limits.h> @@ -451,17 +456,6 @@ linebuf; #endif -typedef struct gfc_file -{ - char filename[PATH_MAX + 1]; - gfc_source_form form; - struct gfc_file *included_by, *next; - locus loc; - struct linebuf *start; -} -gfc_file; - - extern int gfc_suppress_error; @@ -1308,7 +1302,9 @@ void gfc_error_recovery (void); void gfc_gobble_whitespace (void); try gfc_new_file (const char *, gfc_source_form); -extern gfc_file *gfc_current_file; +extern gfc_source_form gfc_current_form; +extern char *gfc_source_file; +/* extern locus gfc_current_locus; */ /* misc.c */ void *gfc_getmem (size_t) ATTRIBUTE_MALLOC; |

