+2003-05-03 Nathan Sidwell <nathan@codesourcery.com>
+
+ * com.c (ffecom_do_entry_): Use location_t and input_location
+ directly.
+ (ffecom_gen_sfuncdef_): Likewise.
+ (ffecom_start_progunit_): Likewise.
+ (ffecom_sym_transform_): Likewise.
+ (ffecom_sym_transform_assign_): Likewise.
+ * lex.c (ffelex_hash_): Likewise.
+ (ffelex_include_): Likewise.
+ * std.c (ffestd_exec_begin): Likewise.
+ (ffestd_exec_end): Likewise.
+ * ste.c (struct gbe_block): Likewise.
+ (ffeste_start_block_): Likewise.
+ (ffeste_start_stmt_): Likewise.
+
2003-05-03 Nathan Sidwell <nathan@codesourcery.com>
* ansify.c (die_unless): Revert lineno change here.
CHARACTER. */
bool cmplxfunc; /* Use f2c way of returning COMPLEX. */
bool multi; /* Master fn has multiple return types. */
- bool altreturning = FALSE; /* This entry point has alternate returns. */
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ bool altreturning = FALSE; /* This entry point has alternate
+ returns. */
+ location_t old_loc = input_location;
input_filename = ffesymbol_where_filename (fn);
input_line = ffesymbol_where_filelinenum (fn);
finish_function (0);
- input_line = old_lineno;
- input_filename = old_input_filename;
-
+ input_location = old_loc;
+
ffecom_doing_entry_ = FALSE;
}
tree result;
bool charfunc = (bt == FFEINFO_basictypeCHARACTER);
static bool recurse = FALSE;
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
ffecom_nested_entry_ = s;
recurse = FALSE;
- input_line = old_lineno;
- input_filename = old_input_filename;
+ input_location = old_loc;
ffecom_nested_entry_ = NULL;
&& (ffecom_primary_entry_kind_ == FFEINFO_kindFUNCTION)
&& (ffecom_master_bt_ == FFEINFO_basictypeNONE);
bool main_program = FALSE;
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
assert (fn != NULL);
assert (ffesymbol_hook (fn).decl_tree == NULL_TREE);
/* Disallow temp vars at this level. */
current_binding_level->prep_state = 2;
- input_line = old_lineno;
- input_filename = old_input_filename;
+ input_location = old_loc;
/* This handles any symbols still untransformed, in case -g specified.
This used to be done in ffecom_finish_progunit, but it turns out to
ffeinfoBasictype bt;
ffeinfoKindtype kt;
ffeglobal g;
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
-
+ location_t old_loc = input_location;
+
/* Must ensure special ASSIGN variables are declared at top of outermost
block, else they'll end up in the innermost block when their first
ASSIGN is seen, which leaves them out of scope when they're the
ffesymbol_hook (s).length_tree = tlen;
ffesymbol_hook (s).addr = addr;
- input_line = old_lineno;
- input_filename = old_input_filename;
+ input_location = old_loc;
return s;
}
ffecom_sym_transform_assign_ (ffesymbol s)
{
tree t; /* Transformed thingy. */
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
if (ffesymbol_sfdummyparent (s) == NULL)
{
ffesymbol_hook (s).assign_tree = t;
- input_line = old_lineno;
- input_filename = old_input_filename;
+ input_location = old_loc;
return s;
}
if ((token != NULL)
&& (ffelex_token_type (token) == FFELEX_typeNUMBER))
{
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
ffewhereFile wf;
/* subtract one, because it is the following line that
if (ffelex_kludge_flag_)
{
input_line = 1;
- input_filename = old_input_filename;
+ input_filename = old_loc.file;
error ("use `#line ...' instead of `# ...' in first line");
}
if (num == 1)
{
/* Pushing to a new file. */
- ffelex_file_push_ (old_lineno, input_filename);
+ ffelex_file_push_ (old_loc.line, input_filename);
}
else if (num == 2)
{
&& ffelex_kludge_flag_)
{
input_line = 1;
- input_filename = old_input_filename;
+ input_filename = old_loc.file;
error ("use `#line ...' instead of `# ...' in first line");
}
if (c == '\n' || c == EOF)
ffewhereLineNumber linecount_current = ffelex_linecount_current_;
ffewhereLineNumber linecount_offset
= ffewhere_line_filelinenum (current_wl);
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
if (card_length != 0)
{
ffewhere_file_set (include_wherefile, TRUE, 0);
- ffelex_file_push_ (old_lineno, ffewhere_file_name (include_wherefile));
+ ffelex_file_push_ (old_loc.line, ffewhere_file_name (include_wherefile));
if (ffelex_include_free_form_)
ffelex_file_free (include_wherefile, include_file);
}
ffelex_card_image_[card_length] = '\0';
- input_filename = old_input_filename;
- input_line = old_lineno;
+ input_location = old_loc;
ffelex_linecount_current_ = linecount_current;
ffelex_current_wf_ = current_wf;
ffelex_final_nontab_column_ = final_nontab_column;
void
ffestd_exec_end ()
{
- int old_lineno = input_line;
- const char *old_input_filename = input_filename;
+ location_t old_loc = input_location;
ffecom_end_transition ();
ffestd_stmt_list_.last = NULL;
ffestd_2pass_entrypoints_ = 0;
- input_line = old_lineno;
- input_filename = old_input_filename;
+ input_location = old_loc;
}
/* ffestd_init_3 -- Initialize for any program unit
{
struct gbe_block *outer;
ffestw block;
- int lineno;
- const char *filename;
+ location_t location;
bool is_stmt;
} *gbe_block;
b->outer = ffeste_top_block_;
b->block = block;
- b->lineno = input_line;
- b->filename = input_filename;
+ b->location = input_location;
b->is_stmt = FALSE;
ffeste_top_block_ = b;
b->outer = ffeste_top_block_;
b->block = NULL;
- b->lineno = input_line;
- b->filename = input_filename;
+ b->location = input_location;
b->is_stmt = TRUE;
ffeste_top_block_ = b;