aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2004-05-15 19:31:32 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-05-15 19:31:32 +0200
commitd4fa05b90d6647ceaf50b5f1b8504fc0e01fae9c (patch)
tree78eca888e2f4be9f6b0c5e4db6a69c5180d050c6 /gcc/fortran/trans.c
parent39ae2b013af4a6a8fbdd8bc2ee72cdda174e0d95 (diff)
downloadgcc-d4fa05b90d6647ceaf50b5f1b8504fc0e01fae9c.zip
gcc-d4fa05b90d6647ceaf50b5f1b8504fc0e01fae9c.tar.gz
gcc-d4fa05b90d6647ceaf50b5f1b8504fc0e01fae9c.tar.bz2
re PR fortran/13702 (When preprocessing Fortran files (.F, .F90 and .F95) cpp should emit line numbers.)
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. From-SVN: r81888
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 39a6341..267391c 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -414,8 +414,9 @@ gfc_add_block_to_block (stmtblock_t * block, stmtblock_t * append)
void
gfc_get_backend_locus (locus * loc)
{
- loc->line = input_line - 1;
- loc->file = gfc_current_backend_file;
+ loc->lb = gfc_getmem (sizeof (gfc_linebuf));
+ loc->lb->linenum = input_line - 1;
+ loc->lb->file = gfc_current_backend_file;
}
@@ -424,9 +425,9 @@ gfc_get_backend_locus (locus * loc)
void
gfc_set_backend_locus (locus * loc)
{
- input_line = loc->line + 1;
- gfc_current_backend_file = loc->file;
- input_filename = loc->file->filename;
+ input_line = loc->lb->linenum;
+ gfc_current_backend_file = loc->lb->file;
+ input_filename = loc->lb->file->filename;
}