summaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-07 14:43:37 +0000
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-07 14:43:37 +0000
commitb31f705bc2e1acb43b04e00cea8a3bdceef51a2a (patch)
tree52dd9f205592562d8c793717e022109001b07465 /gcc/fortran/trans.c
parent779b4c4151fa540c2d6a7e4cb0d9e735f887fbc3 (diff)
downloadgcc-b31f705bc2e1acb43b04e00cea8a3bdceef51a2a.tar.gz
2004-09-07 Per Bothner <per@bothner.com>
Paul Brook <paul@codesourcery.com> * error.c (show_locus): Handle mapped locations. * f95-lang.c (gfc_be_parse_file): Initialize mapped locations. * gfortran.h: Include input.h. (struct gfc_linebuf): Use source_location. * scanner.c (get_file): Initialize linemap. (preprocessor_line): Pass extra argument to get_file. (load_file): Ditto. Setup linemap. (gfc_new_file): Handle mapped locations. * trans-common.c (build_field, build_equiv_decl, build_common_decl): Set decl source locations. (gfc_trans_common): Set blank common block location. * trans-decl.c (gfc_set_decl_location): New function. (gfc_get_label_decl, gfc_get_symbol_decl): Use it. (trans_function_start): Move call to gfc_set_backend_locus.. (build_function_decl): ... to here. (build_entry_thunks): Set and restore the backend locus. (gfc_generate_constructors): Remove excess arguments to init_function_start. (gfc_generate_block_data): Add comments. Set the decl locus. * trans-io.c (set_error_locus): Handle mapped locations. * trans.c (gfc_get_backend_locus, gfc_get_backend_locus): Ditto. (gfc_trans_code): Use SET_EXPR_LOCATION. (gfc_generate_code): Override the location of the new symbol. * trans.h (gfc_set_decl_location): Add prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87142 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 727a7d7bb2d..59decfe1ce1 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -442,7 +442,11 @@ void
gfc_get_backend_locus (locus * loc)
{
loc->lb = gfc_getmem (sizeof (gfc_linebuf));
+#ifdef USE_MAPPED_LOCATION
+ loc->lb->location = input_location; // FIXME adjust??
+#else
loc->lb->linenum = input_line - 1;
+#endif
loc->lb->file = gfc_current_backend_file;
}
@@ -452,9 +456,13 @@ gfc_get_backend_locus (locus * loc)
void
gfc_set_backend_locus (locus * loc)
{
- input_line = loc->lb->linenum;
gfc_current_backend_file = loc->lb->file;
+#ifdef USE_MAPPED_LOCATION
+ input_location = loc->lb->location;
+#else
+ input_line = loc->lb->linenum;
input_filename = loc->lb->file->filename;
+#endif
}
@@ -626,7 +634,7 @@ gfc_trans_code (gfc_code * code)
if (TREE_CODE (res) == STATEMENT_LIST)
annotate_all_with_locus (&res, input_location);
else
- annotate_with_locus (res, input_location);
+ SET_EXPR_LOCATION (res, input_location);
/* Add the new statemment to the block. */
gfc_add_expr_to_block (&block, res);
@@ -665,6 +673,9 @@ gfc_generate_code (gfc_namespace * ns)
attr.subroutine = 1;
attr.access = ACCESS_PUBLIC;
main_program->attr = attr;
+ /* Set the location to the first line of code. */
+ if (ns->code)
+ main_program->declared_at = ns->code->loc;
ns->proc_name = main_program;
gfc_commit_symbols ();
}