Remove macros that implicitly use input_location

gcc/
	* input.h (input_line): Remove.
	(input_filename): Likewise.
	(in_system_header): Likewise.
	* tree.h (EXPR_LOC_OR_HERE): Remove.
	* config/bfin/bfin.c (output_file_start): Remove use of
	input_filename macro.
	* builtins.c (c_strlen): Remove use of EXPR_LOC_OR_HERE macro.
	* gimplify.c (internal_get_tmp_var): Likewise.
	EXPR_LOC_OR_HERE macro.
	(shortcut_cond_expr): Likewise.
	* tree-diagnostic.c (diagnostic_report_current_function): Remove
	use of input_filename macro.
	* tree.c (get_file_function_name): Likewise.

gcc/ada
	* gcc-interface/utils2.c (build_call_raise): Remove use of
	input_line macro.
	(build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.

gcc/c-family
	* c-common.c (unsafe_conversion_p): Remove use of
	EXPR_LOC_OR_HERE macro.
	(conversion_warning): Likewise.
	(warnings_for_convert_and_check): Likewise.
	(warn_for_collisions_1): Likewise.
	(shorten_compare): Likewise, and remove use of in_system_header
	macro, using the location from the former.
	* c-lex.c (dump_one_header): Remove use of input_filename macro.
	(cb_def_pragma): Remove use of in_system_header macro.
	(lex_string): Likewise.
	* c-pragma.c (handle_pragma_float_const_decimal64): Likewise.

gcc/c
	* c-decl.c (define_label, shadow_tag_warned)
	(check_bitfield_type_and_width, grokdeclarator, grokparms,
	store_parm_decls_newstyle, store_parm_decls_oldstyle)
	(declspecs_add_type): Remove use of in_system_header macro.
	* c-parser.c (c_parser_unary_expression): Likewise.
	* c-typeck.c (store_init_value, process_init_element)
	(c_start_case): Likewise.

	* c-decl.c (build_enumerator): Remove use of EXPR_LOC_OR_HERE
	macro.

	* c-parser.c (c_parser_set_source_position_from_token): Remove
	reference to in_system_header from comment.

gcc/cp
	* call.c (build_integral_nontype_arg_conv): Remove use of
	EXPR_LOC_OR_HERE macro.
	(convert_like_real): Likewise.
	(convert_arg_to_ellipsis): Likewise.
	(build_cxx_call): Likewise.
	(perform_implicit_conversion_flags): Likewise.
	(initialize_reference): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	(ocp_convert): Likewise.
	(convert_to_void): Likewise.
	* decl.c (pop_label): Update comment.
	(pop_switch): Remove use of EXPR_LOC_OR_HERE macro.
	(check_tag_decl): Remove use of in_system_header macro.
	(make_rtl_for_nonlocal_decl): Remove use of input_filename
	macro.
	(compute_array_index_type): Remove use of in_system_header
	macro.
	(grokdeclarator): Likewise.
	* error.c (dump_global_iord): Remove use of input_filename
	macro.
	(location_of): Remove use of EXPR_LOC_OR_HERE macro.
	(maybe_warn_cpp0x): Remove use of in_system_header macro.
	* init.c (build_new_1): Remove use of EXPR_LOC_OR_HERE macro.
	* lex.c (handle_pragma_interface): Remove use of input_filename
	macro.
	(handle_pragma_implementation): Likewise.
	(cxx_make_type): Likewise.
	(in_main_input_context): Likewise.
	* name-lookup.c (push_binding_level): Remove use of
	input_line macro.
	(leave_scope): Likewise.
	(resume_scope): Likewise.
	* parser.c (cp_parser_unqualified_id): Remove use of
	in_system_header macro.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_declaration_seq_opt): Likewise.
	(cp_parser_enumerator_list): Likewise.
	(cp_parser_parameter_declaration_clause): Likewise.
	(cp_parser_exception_specification_opt): Likewise.
	* pt.c (unify_arg_conversion): Remove use of EXPR_LOC_OR_HERE
	macro.
	(convert_nontype_argument): Likewise.
	(push_tinst_level): Remove use of in_system_header macro.
	(tsubst_copy_and_build): Remove use of EXPR_LOC_OR_HERE
	macros.
	(do_decl_instantiation): Remove use of in_system_header macro.
	(do_type_instantiation): Likewise.
	* semantics.c (finish_call_expr): Remove use of EXPR_LOC_OR_HERE
	macro.
	(begin_class_definition): Remove use of input_filename macro.
	(cxx_eval_call_expression): Remove use of EXPR_LOC_OR_HERE
	macro.
	(cxx_eval_constant_expression): Likewise.
	(potential_constant_expression_1): Likewise.
	* typeck.c (decay_conversion): Likewise.
	(rationalize_conditional_expr): Likewise.
	(build_x_compound_expr_from_list): Likewise.
	(convert_for_assignment): Likewise.
	* typeck2.c (check_narrowing): Likewise.

gcc/fortran
	* trans.c (trans_runtime_error_vararg): Remove use of input_line
	macro.

gcc/java
	* class.c (maybe_layout_super_class): Update comment.
	* decl.c (java_add_stmt): Remove use of input_filename macro.
	* jcf-parse.c (set_source_filename): Remove use of
	input_filename macro.
	(parse_class_file): Remove use of input_line and input_filename
	macros.
	(java_parse_file): Remove use of input_filename macro.

From-SVN: r205262
This commit is contained in:
David Malcolm 2013-11-22 14:18:13 +00:00 committed by David Malcolm
parent f81448f752
commit 8400e75ec4
37 changed files with 281 additions and 128 deletions

View File

@ -1,3 +1,19 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* input.h (input_line): Remove.
(input_filename): Likewise.
(in_system_header): Likewise.
* tree.h (EXPR_LOC_OR_HERE): Remove.
* config/bfin/bfin.c (output_file_start): Remove use of
input_filename macro.
* builtins.c (c_strlen): Remove use of EXPR_LOC_OR_HERE macro.
* gimplify.c (internal_get_tmp_var): Likewise.
EXPR_LOC_OR_HERE macro.
(shortcut_cond_expr): Likewise.
* tree-diagnostic.c (diagnostic_report_current_function): Remove
use of input_filename macro.
* tree.c (get_file_function_name): Likewise.
2013-11-22 Kenneth Zadeck <zadeck@naturalbridge.com> 2013-11-22 Kenneth Zadeck <zadeck@naturalbridge.com>
* store-layout.c (place-field): Fix hwi test and accessor mismatch. * store-layout.c (place-field): Fix hwi test and accessor mismatch.

View File

@ -1,3 +1,10 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* gcc-interface/utils2.c (build_call_raise): Remove use of
input_line macro.
(build_call_raise_range): Likewise.
(build_call_raise_column): Likewise.
2013-11-20 Kenneth Zadeck <zadeck@naturalbridge.com> 2013-11-20 Kenneth Zadeck <zadeck@naturalbridge.com>
Mike Stump <mikestump@comcast.net> Mike Stump <mikestump@comcast.net>
Richard Sandiford <rdsandiford@googlemail.com> Richard Sandiford <rdsandiford@googlemail.com>

View File

@ -1715,7 +1715,8 @@ build_call_raise (int msg, Node_Id gnat_node, char kind)
filename = build_string (len, str); filename = build_string (len, str);
line_number line_number
= (gnat_node != Empty && Sloc (gnat_node) != No_Location) = (gnat_node != Empty && Sloc (gnat_node) != No_Location)
? Get_Logical_Line_Number (Sloc(gnat_node)) : input_line; ? Get_Logical_Line_Number (Sloc(gnat_node))
: LOCATION_LINE (input_location);
TREE_TYPE (filename) = build_array_type (unsigned_char_type_node, TREE_TYPE (filename) = build_array_type (unsigned_char_type_node,
build_index_type (size_int (len))); build_index_type (size_int (len)));
@ -1761,7 +1762,7 @@ build_call_raise_range (int msg, Node_Id gnat_node,
} }
else else
{ {
line_number = input_line; line_number = LOCATION_LINE (input_location);
column_number = 0; column_number = 0;
} }
@ -1811,7 +1812,7 @@ build_call_raise_column (int msg, Node_Id gnat_node)
} }
else else
{ {
line_number = input_line; line_number = LOCATION_LINE (input_location);
column_number = 0; column_number = 0;
} }

View File

@ -588,7 +588,7 @@ c_strlen (tree src, int only_value)
&& (only_value || !TREE_SIDE_EFFECTS (TREE_OPERAND (src, 0)))) && (only_value || !TREE_SIDE_EFFECTS (TREE_OPERAND (src, 0))))
return c_strlen (TREE_OPERAND (src, 1), only_value); return c_strlen (TREE_OPERAND (src, 1), only_value);
loc = EXPR_LOC_OR_HERE (src); loc = EXPR_LOC_OR_LOC (src, input_location);
src = string_constant (src, &offset_node); src = string_constant (src, &offset_node);
if (src == 0) if (src == 0)

View File

@ -1,3 +1,17 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* c-common.c (unsafe_conversion_p): Remove use of
EXPR_LOC_OR_HERE macro.
(conversion_warning): Likewise.
(warnings_for_convert_and_check): Likewise.
(warn_for_collisions_1): Likewise.
(shorten_compare): Likewise, and remove use of in_system_header
macro, using the location from the former.
* c-lex.c (dump_one_header): Remove use of input_filename macro.
(cb_def_pragma): Remove use of in_system_header macro.
(lex_string): Likewise.
* c-pragma.c (handle_pragma_float_const_decimal64): Likewise.
2013-11-20 Kenneth Zadeck <zadeck@naturalbridge.com> 2013-11-20 Kenneth Zadeck <zadeck@naturalbridge.com>
Mike Stump <mikestump@comcast.net> Mike Stump <mikestump@comcast.net>
Richard Sandiford <rdsandiford@googlemail.com> Richard Sandiford <rdsandiford@googlemail.com>

View File

@ -2552,7 +2552,7 @@ unsafe_conversion_p (tree type, tree expr, bool produce_warns)
{ {
enum conversion_safety give_warning = SAFE_CONVERSION; /* is 0 or false */ enum conversion_safety give_warning = SAFE_CONVERSION; /* is 0 or false */
tree expr_type = TREE_TYPE (expr); tree expr_type = TREE_TYPE (expr);
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (TREE_CODE (expr) == REAL_CST || TREE_CODE (expr) == INTEGER_CST) if (TREE_CODE (expr) == REAL_CST || TREE_CODE (expr) == INTEGER_CST)
{ {
@ -2718,7 +2718,7 @@ static void
conversion_warning (tree type, tree expr) conversion_warning (tree type, tree expr)
{ {
tree expr_type = TREE_TYPE (expr); tree expr_type = TREE_TYPE (expr);
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
enum conversion_safety conversion_kind; enum conversion_safety conversion_kind;
if (!warn_conversion && !warn_sign_conversion && !warn_float_conversion) if (!warn_conversion && !warn_sign_conversion && !warn_float_conversion)
@ -2791,7 +2791,7 @@ conversion_warning (tree type, tree expr)
void void
warnings_for_convert_and_check (tree type, tree expr, tree result) warnings_for_convert_and_check (tree type, tree expr, tree result)
{ {
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (TREE_CODE (expr) == INTEGER_CST if (TREE_CODE (expr) == INTEGER_CST
&& (TREE_CODE (type) == INTEGER_TYPE && (TREE_CODE (type) == INTEGER_TYPE
@ -3001,7 +3001,7 @@ warn_for_collisions_1 (tree written, tree writer, struct tlist *list,
&& (!only_writes || list->writer)) && (!only_writes || list->writer))
{ {
warned_ids = new_tlist (warned_ids, written, NULL_TREE); warned_ids = new_tlist (warned_ids, written, NULL_TREE);
warning_at (EXPR_LOC_OR_HERE (writer), warning_at (EXPR_LOC_OR_LOC (writer, input_location),
OPT_Wsequence_point, "operation on %qE may be undefined", OPT_Wsequence_point, "operation on %qE may be undefined",
list->expr); list->expr);
} }
@ -3999,7 +3999,7 @@ shorten_compare (tree *op0_ptr, tree *op1_ptr, tree *restype_ptr,
int real1, real2; int real1, real2;
tree primop0, primop1; tree primop0, primop1;
enum tree_code code = *rescode_ptr; enum tree_code code = *rescode_ptr;
location_t loc = EXPR_LOC_OR_HERE (op0); location_t loc = EXPR_LOC_OR_LOC (op0, input_location);
/* Throw away any conversions to wider types /* Throw away any conversions to wider types
already present in the operands. */ already present in the operands. */
@ -4297,7 +4297,7 @@ shorten_compare (tree *op0_ptr, tree *op1_ptr, tree *restype_ptr,
the comparison isn't an issue, so suppress the the comparison isn't an issue, so suppress the
warning. */ warning. */
bool warn = bool warn =
warn_type_limits && !in_system_header warn_type_limits && !in_system_header_at (loc)
&& c_inhibit_evaluation_warnings == 0 && c_inhibit_evaluation_warnings == 0
&& !(TREE_CODE (primop0) == INTEGER_CST && !(TREE_CODE (primop0) == INTEGER_CST
&& !TREE_OVERFLOW (convert (c_common_signed_type (type), && !TREE_OVERFLOW (convert (c_common_signed_type (type),

View File

@ -147,7 +147,7 @@ dump_one_header (splay_tree_node n, void * ARG_UNUSED (dummy))
void void
dump_time_statistics (void) dump_time_statistics (void)
{ {
struct c_fileinfo *file = get_fileinfo (input_filename); struct c_fileinfo *file = get_fileinfo (LOCATION_FILE (input_location));
int this_time = get_run_time (); int this_time = get_run_time ();
file->time += this_time - body_time; file->time += this_time - body_time;
@ -243,7 +243,7 @@ cb_def_pragma (cpp_reader *pfile, source_location loc)
/* Issue a warning message if we have been asked to do so. Ignore /* Issue a warning message if we have been asked to do so. Ignore
unknown pragmas in system headers unless an explicit unknown pragmas in system headers unless an explicit
-Wunknown-pragmas has been given. */ -Wunknown-pragmas has been given. */
if (warn_unknown_pragmas > in_system_header) if (warn_unknown_pragmas > in_system_header_at (input_location))
{ {
const unsigned char *space, *name; const unsigned char *space, *name;
const cpp_token *s; const cpp_token *s;
@ -1071,7 +1071,7 @@ lex_string (const cpp_token *tok, tree *valp, bool objc_string, bool translate)
if (concats) if (concats)
strs = XOBFINISH (&str_ob, cpp_string *); strs = XOBFINISH (&str_ob, cpp_string *);
if (concats && !objc_string && !in_system_header) if (concats && !objc_string && !in_system_header_at (input_location))
warning (OPT_Wtraditional, warning (OPT_Wtraditional,
"traditional C rejects string constant concatenation"); "traditional C rejects string constant concatenation");

View File

@ -1121,7 +1121,7 @@ handle_pragma_float_const_decimal64 (cpp_reader *ARG_UNUSED (dummy))
{ {
if (c_dialect_cxx ()) if (c_dialect_cxx ())
{ {
if (warn_unknown_pragmas > in_system_header) if (warn_unknown_pragmas > in_system_header_at (input_location))
warning (OPT_Wunknown_pragmas, warning (OPT_Wunknown_pragmas,
"%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported" "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported"
" for C++"); " for C++");
@ -1130,7 +1130,7 @@ handle_pragma_float_const_decimal64 (cpp_reader *ARG_UNUSED (dummy))
if (!targetm.decimal_float_supported_p ()) if (!targetm.decimal_float_supported_p ())
{ {
if (warn_unknown_pragmas > in_system_header) if (warn_unknown_pragmas > in_system_header_at (input_location))
warning (OPT_Wunknown_pragmas, warning (OPT_Wunknown_pragmas,
"%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported" "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported"
" on this target"); " on this target");

View File

@ -1,3 +1,19 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* c-decl.c (define_label, shadow_tag_warned)
(check_bitfield_type_and_width, grokdeclarator, grokparms,
store_parm_decls_newstyle, store_parm_decls_oldstyle)
(declspecs_add_type): Remove use of in_system_header macro.
* c-parser.c (c_parser_unary_expression): Likewise.
* c-typeck.c (store_init_value, process_init_element)
(c_start_case): Likewise.
* c-decl.c (build_enumerator): Remove use of EXPR_LOC_OR_HERE
macro.
* c-parser.c (c_parser_set_source_position_from_token): Remove
reference to in_system_header from comment.
2013-11-18 Richard Sandiford <rdsandiford@googlemail.com> 2013-11-18 Richard Sandiford <rdsandiford@googlemail.com>
* c-decl.c (grokdeclarator): Update comment to refer to * c-decl.c (grokdeclarator): Update comment to refer to

View File

@ -3328,7 +3328,7 @@ define_label (location_t location, tree name)
bind_label (name, label, current_function_scope, label_vars); bind_label (name, label, current_function_scope, label_vars);
} }
if (!in_system_header && lookup_name (name)) if (!in_system_header_at (input_location) && lookup_name (name))
warning_at (location, OPT_Wtraditional, warning_at (location, OPT_Wtraditional,
"traditional C lacks a separate namespace " "traditional C lacks a separate namespace "
"for labels, identifier %qE conflicts", name); "for labels, identifier %qE conflicts", name);
@ -3762,7 +3762,7 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
} }
else else
{ {
if (warned != 1 && !in_system_header) if (warned != 1 && !in_system_header_at (input_location))
{ {
pedwarn (input_location, 0, pedwarn (input_location, 0,
"useless type name in empty declaration"); "useless type name in empty declaration");
@ -3770,7 +3770,8 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
} }
} }
} }
else if (warned != 1 && !in_system_header && declspecs->typedef_p) else if (warned != 1 && !in_system_header_at (input_location)
&& declspecs->typedef_p)
{ {
pedwarn (input_location, 0, "useless type name in empty declaration"); pedwarn (input_location, 0, "useless type name in empty declaration");
warned = 1; warned = 1;
@ -3802,20 +3803,23 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
warned = 1; warned = 1;
} }
if (!warned && !in_system_header && declspecs->storage_class != csc_none) if (!warned && !in_system_header_at (input_location)
&& declspecs->storage_class != csc_none)
{ {
warning (0, "useless storage class specifier in empty declaration"); warning (0, "useless storage class specifier in empty declaration");
warned = 2; warned = 2;
} }
if (!warned && !in_system_header && declspecs->thread_p) if (!warned && !in_system_header_at (input_location) && declspecs->thread_p)
{ {
warning (0, "useless %qs in empty declaration", warning (0, "useless %qs in empty declaration",
declspecs->thread_gnu_p ? "__thread" : "_Thread_local"); declspecs->thread_gnu_p ? "__thread" : "_Thread_local");
warned = 2; warned = 2;
} }
if (!warned && !in_system_header && (declspecs->const_p if (!warned
&& !in_system_header_at (input_location)
&& (declspecs->const_p
|| declspecs->volatile_p || declspecs->volatile_p
|| declspecs->atomic_p || declspecs->atomic_p
|| declspecs->restrict_p || declspecs->restrict_p
@ -3825,7 +3829,8 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
warned = 2; warned = 2;
} }
if (!warned && !in_system_header && declspecs->alignas_p) if (!warned && !in_system_header_at (input_location)
&& declspecs->alignas_p)
{ {
warning (0, "useless %<_Alignas%> in empty declaration"); warning (0, "useless %<_Alignas%> in empty declaration");
warned = 2; warned = 2;
@ -4821,7 +4826,7 @@ check_bitfield_type_and_width (tree *type, tree *width, tree orig_name)
} }
type_mv = TYPE_MAIN_VARIANT (*type); type_mv = TYPE_MAIN_VARIANT (*type);
if (!in_system_header if (!in_system_header_at (input_location)
&& type_mv != integer_type_node && type_mv != integer_type_node
&& type_mv != unsigned_type_node && type_mv != unsigned_type_node
&& type_mv != boolean_type_node) && type_mv != boolean_type_node)
@ -5071,7 +5076,7 @@ grokdeclarator (const struct c_declarator *declarator,
/* Diagnose defaulting to "int". */ /* Diagnose defaulting to "int". */
if (declspecs->default_int_p && !in_system_header) if (declspecs->default_int_p && !in_system_header_at (input_location))
{ {
/* Issue a warning if this is an ISO C 99 program or if /* Issue a warning if this is an ISO C 99 program or if
-Wreturn-type and this is a function, or if -Wimplicit; -Wreturn-type and this is a function, or if -Wimplicit;
@ -5351,7 +5356,8 @@ grokdeclarator (const struct c_declarator *declarator,
type = error_mark_node; type = error_mark_node;
} }
if (pedantic && !in_system_header && flexible_array_type_p (type)) if (pedantic && !in_system_header_at (input_location)
&& flexible_array_type_p (type))
pedwarn (loc, OPT_Wpedantic, pedwarn (loc, OPT_Wpedantic,
"invalid use of structure with flexible array member"); "invalid use of structure with flexible array member");
@ -5529,7 +5535,8 @@ grokdeclarator (const struct c_declarator *declarator,
flexible_array_member = (t->kind == cdk_id); flexible_array_member = (t->kind == cdk_id);
} }
if (flexible_array_member if (flexible_array_member
&& pedantic && !flag_isoc99 && !in_system_header) && pedantic && !flag_isoc99
&& !in_system_header_at (input_location))
pedwarn (loc, OPT_Wpedantic, pedwarn (loc, OPT_Wpedantic,
"ISO C90 does not support flexible array members"); "ISO C90 does not support flexible array members");
@ -6383,7 +6390,8 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag)
error ("%<[*]%> not allowed in other than function prototype scope"); error ("%<[*]%> not allowed in other than function prototype scope");
} }
if (arg_types == 0 && !funcdef_flag && !in_system_header) if (arg_types == 0 && !funcdef_flag
&& !in_system_header_at (input_location))
warning (OPT_Wstrict_prototypes, warning (OPT_Wstrict_prototypes,
"function declaration isn%'t a prototype"); "function declaration isn%'t a prototype");
@ -7782,7 +7790,7 @@ build_enumerator (location_t decl_loc, location_t loc,
/* Set basis for default for next value. */ /* Set basis for default for next value. */
the_enum->enum_next_value the_enum->enum_next_value
= build_binary_op (EXPR_LOC_OR_HERE (value), = build_binary_op (EXPR_LOC_OR_LOC (value, input_location),
PLUS_EXPR, value, integer_one_node, 0); PLUS_EXPR, value, integer_one_node, 0);
the_enum->enum_overflow = tree_int_cst_lt (the_enum->enum_next_value, value); the_enum->enum_overflow = tree_int_cst_lt (the_enum->enum_next_value, value);
@ -8056,7 +8064,8 @@ store_parm_decls_newstyle (tree fndecl, const struct c_arg_info *arg_info)
warning if we got here because ARG_INFO_TYPES was error_mark_node warning if we got here because ARG_INFO_TYPES was error_mark_node
(this happens when a function definition has just an ellipsis in (this happens when a function definition has just an ellipsis in
its parameter list). */ its parameter list). */
else if (!in_system_header && !current_function_scope else if (!in_system_header_at (input_location)
&& !current_function_scope
&& arg_info->types != error_mark_node) && arg_info->types != error_mark_node)
warning_at (DECL_SOURCE_LOCATION (fndecl), OPT_Wtraditional, warning_at (DECL_SOURCE_LOCATION (fndecl), OPT_Wtraditional,
"traditional C rejects ISO C style function definitions"); "traditional C rejects ISO C style function definitions");
@ -8110,7 +8119,7 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info)
tree parmids = arg_info->parms; tree parmids = arg_info->parms;
struct pointer_set_t *seen_args = pointer_set_create (); struct pointer_set_t *seen_args = pointer_set_create ();
if (!in_system_header) if (!in_system_header_at (input_location))
warning_at (DECL_SOURCE_LOCATION (fndecl), warning_at (DECL_SOURCE_LOCATION (fndecl),
OPT_Wold_style_definition, "old-style function definition"); OPT_Wold_style_definition, "old-style function definition");
@ -9468,7 +9477,7 @@ declspecs_add_type (location_t loc, struct c_declspecs *specs,
error_at (loc, "%<__int128%> is not supported for this target"); error_at (loc, "%<__int128%> is not supported for this target");
return specs; return specs;
} }
if (!in_system_header) if (!in_system_header_at (input_location))
pedwarn (loc, OPT_Wpedantic, pedwarn (loc, OPT_Wpedantic,
"ISO C does not support %<__int128%> type"); "ISO C does not support %<__int128%> type");

View File

@ -775,8 +775,7 @@ c_parser_consume_pragma (c_parser *parser)
parser->in_pragma = true; parser->in_pragma = true;
} }
/* Update the globals input_location and in_system_header from /* Update the global input_location from TOKEN. */
TOKEN. */
static inline void static inline void
c_parser_set_source_position_from_token (c_token *token) c_parser_set_source_position_from_token (c_token *token)
{ {
@ -6301,7 +6300,7 @@ c_parser_unary_expression (c_parser *parser)
ret.value = build_indirect_ref (op_loc, op.value, RO_UNARY_STAR); ret.value = build_indirect_ref (op_loc, op.value, RO_UNARY_STAR);
return ret; return ret;
case CPP_PLUS: case CPP_PLUS:
if (!c_dialect_objc () && !in_system_header) if (!c_dialect_objc () && !in_system_header_at (input_location))
warning_at (op_loc, warning_at (op_loc,
OPT_Wtraditional, OPT_Wtraditional,
"traditional C rejects the unary plus operator"); "traditional C rejects the unary plus operator");

View File

@ -6185,7 +6185,7 @@ store_init_value (location_t init_loc, tree decl, tree init, tree origtype)
/* Store the expression if valid; else report error. */ /* Store the expression if valid; else report error. */
if (!in_system_header if (!in_system_header_at (input_location)
&& AGGREGATE_TYPE_P (TREE_TYPE (decl)) && !TREE_STATIC (decl)) && AGGREGATE_TYPE_P (TREE_TYPE (decl)) && !TREE_STATIC (decl))
warning (OPT_Wtraditional, "traditional C rejects automatic " warning (OPT_Wtraditional, "traditional C rejects automatic "
"aggregate initialization"); "aggregate initialization");
@ -8686,7 +8686,7 @@ process_init_element (struct c_expr value, bool implicit,
again on the assumption that this must be conditional on again on the assumption that this must be conditional on
__STDC__ anyway (and we've already complained about the __STDC__ anyway (and we've already complained about the
member-designator already). */ member-designator already). */
if (!in_system_header && !constructor_designated if (!in_system_header_at (input_location) && !constructor_designated
&& !(value.value && (integer_zerop (value.value) && !(value.value && (integer_zerop (value.value)
|| real_zerop (value.value)))) || real_zerop (value.value))))
warning (OPT_Wtraditional, "traditional C rejects initialization " warning (OPT_Wtraditional, "traditional C rejects initialization "
@ -9287,7 +9287,7 @@ c_start_case (location_t switch_loc,
{ {
tree type = TYPE_MAIN_VARIANT (orig_type); tree type = TYPE_MAIN_VARIANT (orig_type);
if (!in_system_header if (!in_system_header_at (input_location)
&& (type == long_integer_type_node && (type == long_integer_type_node
|| type == long_unsigned_type_node)) || type == long_unsigned_type_node))
warning_at (switch_cond_loc, warning_at (switch_cond_loc,

View File

@ -105,7 +105,7 @@ output_file_start (void)
FILE *file = asm_out_file; FILE *file = asm_out_file;
int i; int i;
fprintf (file, ".file \"%s\";\n", input_filename); fprintf (file, ".file \"%s\";\n", LOCATION_FILE (input_location));
for (i = 0; arg_regs[i] >= 0; i++) for (i = 0; arg_regs[i] >= 0; i++)
; ;

View File

@ -1,3 +1,66 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* call.c (build_integral_nontype_arg_conv): Remove use of
EXPR_LOC_OR_HERE macro.
(convert_like_real): Likewise.
(convert_arg_to_ellipsis): Likewise.
(build_cxx_call): Likewise.
(perform_implicit_conversion_flags): Likewise.
(initialize_reference): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
(convert_to_reference): Likewise.
(ocp_convert): Likewise.
(convert_to_void): Likewise.
* decl.c (pop_label): Update comment.
(pop_switch): Remove use of EXPR_LOC_OR_HERE macro.
(check_tag_decl): Remove use of in_system_header macro.
(make_rtl_for_nonlocal_decl): Remove use of input_filename
macro.
(compute_array_index_type): Remove use of in_system_header
macro.
(grokdeclarator): Likewise.
* error.c (dump_global_iord): Remove use of input_filename
macro.
(location_of): Remove use of EXPR_LOC_OR_HERE macro.
(maybe_warn_cpp0x): Remove use of in_system_header macro.
* init.c (build_new_1): Remove use of EXPR_LOC_OR_HERE macro.
* lex.c (handle_pragma_interface): Remove use of input_filename
macro.
(handle_pragma_implementation): Likewise.
(cxx_make_type): Likewise.
(in_main_input_context): Likewise.
* name-lookup.c (push_binding_level): Remove use of
input_line macro.
(leave_scope): Likewise.
(resume_scope): Likewise.
* parser.c (cp_parser_unqualified_id): Remove use of
in_system_header macro.
(cp_parser_cast_expression): Likewise.
(cp_parser_declaration_seq_opt): Likewise.
(cp_parser_enumerator_list): Likewise.
(cp_parser_parameter_declaration_clause): Likewise.
(cp_parser_exception_specification_opt): Likewise.
* pt.c (unify_arg_conversion): Remove use of EXPR_LOC_OR_HERE
macro.
(convert_nontype_argument): Likewise.
(push_tinst_level): Remove use of in_system_header macro.
(tsubst_copy_and_build): Remove use of EXPR_LOC_OR_HERE
macros.
(do_decl_instantiation): Remove use of in_system_header macro.
(do_type_instantiation): Likewise.
* semantics.c (finish_call_expr): Remove use of EXPR_LOC_OR_HERE
macro.
(begin_class_definition): Remove use of input_filename macro.
(cxx_eval_call_expression): Remove use of EXPR_LOC_OR_HERE
macro.
(cxx_eval_constant_expression): Likewise.
(potential_constant_expression_1): Likewise.
* typeck.c (decay_conversion): Likewise.
(rationalize_conditional_expr): Likewise.
(build_x_compound_expr_from_list): Likewise.
(convert_for_assignment): Likewise.
* typeck2.c (check_narrowing): Likewise.
2013-11-22 Trevor Saunders <tsaunders@mozilla.com> 2013-11-22 Trevor Saunders <tsaunders@mozilla.com>
* parser.c, semantics.c: Change some local variables from vec to * parser.c, semantics.c: Change some local variables from vec to

View File

@ -3687,7 +3687,7 @@ build_integral_nontype_arg_conv (tree type, tree expr, tsubst_flags_t complain)
conversion *conv; conversion *conv;
void *p; void *p;
tree t; tree t;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (error_operand_p (expr)) if (error_operand_p (expr))
return error_mark_node; return error_mark_node;
@ -5850,7 +5850,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
tree totype = convs->type; tree totype = convs->type;
diagnostic_t diag_kind; diagnostic_t diag_kind;
int flags; int flags;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (convs->bad_p && !(complain & tf_error)) if (convs->bad_p && !(complain & tf_error))
return error_mark_node; return error_mark_node;
@ -6263,7 +6263,7 @@ tree
convert_arg_to_ellipsis (tree arg, tsubst_flags_t complain) convert_arg_to_ellipsis (tree arg, tsubst_flags_t complain)
{ {
tree arg_type; tree arg_type;
location_t loc = EXPR_LOC_OR_HERE (arg); location_t loc = EXPR_LOC_OR_LOC (arg, input_location);
/* [expr.call] /* [expr.call]
@ -7168,7 +7168,7 @@ build_cxx_call (tree fn, int nargs, tree *argarray,
int optimize_sav; int optimize_sav;
/* Remember roughly where this call is. */ /* Remember roughly where this call is. */
location_t loc = EXPR_LOC_OR_HERE (fn); location_t loc = EXPR_LOC_OR_LOC (fn, input_location);
fn = build_call_a (fn, nargs, argarray); fn = build_call_a (fn, nargs, argarray);
SET_EXPR_LOCATION (fn, loc); SET_EXPR_LOCATION (fn, loc);
@ -8979,7 +8979,7 @@ perform_implicit_conversion_flags (tree type, tree expr,
{ {
conversion *conv; conversion *conv;
void *p; void *p;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (error_operand_p (expr)) if (error_operand_p (expr))
return error_mark_node; return error_mark_node;
@ -9295,7 +9295,7 @@ initialize_reference (tree type, tree expr,
{ {
conversion *conv; conversion *conv;
void *p; void *p;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (type == error_mark_node || error_operand_p (expr)) if (type == error_mark_node || error_operand_p (expr))
return error_mark_node; return error_mark_node;

View File

@ -78,7 +78,7 @@ cp_convert_to_pointer (tree type, tree expr, tsubst_flags_t complain)
tree intype = TREE_TYPE (expr); tree intype = TREE_TYPE (expr);
enum tree_code form; enum tree_code form;
tree rval; tree rval;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (intype == error_mark_node) if (intype == error_mark_node)
return error_mark_node; return error_mark_node;
@ -413,7 +413,7 @@ convert_to_reference (tree reftype, tree expr, int convtype,
tree rval = NULL_TREE; tree rval = NULL_TREE;
tree rval_as_conversion = NULL_TREE; tree rval_as_conversion = NULL_TREE;
bool can_convert_intype_to_type; bool can_convert_intype_to_type;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (TREE_CODE (type) == FUNCTION_TYPE if (TREE_CODE (type) == FUNCTION_TYPE
&& TREE_TYPE (expr) == unknown_type_node) && TREE_TYPE (expr) == unknown_type_node)
@ -656,7 +656,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags,
enum tree_code code = TREE_CODE (type); enum tree_code code = TREE_CODE (type);
const char *invalid_conv_diag; const char *invalid_conv_diag;
tree e1; tree e1;
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (error_operand_p (e) || type == error_mark_node) if (error_operand_p (e) || type == error_mark_node)
return error_mark_node; return error_mark_node;
@ -912,7 +912,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags,
tree tree
convert_to_void (tree expr, impl_conv_void implicit, tsubst_flags_t complain) convert_to_void (tree expr, impl_conv_void implicit, tsubst_flags_t complain)
{ {
location_t loc = EXPR_LOC_OR_HERE (expr); location_t loc = EXPR_LOC_OR_LOC (expr, input_location);
if (expr == error_mark_node if (expr == error_mark_node
|| TREE_TYPE (expr) == error_mark_node) || TREE_TYPE (expr) == error_mark_node)

View File

@ -376,7 +376,8 @@ pop_label (tree label, tree old_value)
location_t location; location_t location;
error ("label %q+D used but not defined", label); error ("label %q+D used but not defined", label);
location = input_location; /* FIXME want (input_filename, (line)0) */ location = input_location;
/* FIXME want (LOCATION_FILE (input_location), (line)0) */
/* Avoid crashing later. */ /* Avoid crashing later. */
define_label (location, DECL_NAME (label)); define_label (location, DECL_NAME (label));
} }
@ -3092,7 +3093,7 @@ pop_switch (void)
location_t switch_location; location_t switch_location;
/* Emit warnings as needed. */ /* Emit warnings as needed. */
switch_location = EXPR_LOC_OR_HERE (cs->switch_stmt); switch_location = EXPR_LOC_OR_LOC (cs->switch_stmt, input_location);
if (!processing_template_decl) if (!processing_template_decl)
c_do_switch_warnings (cs->cases, switch_location, c_do_switch_warnings (cs->cases, switch_location,
SWITCH_STMT_TYPE (cs->switch_stmt), SWITCH_STMT_TYPE (cs->switch_stmt),
@ -4241,7 +4242,7 @@ check_tag_decl (cp_decl_specifier_seq *declspecs,
error ("multiple types in one declaration"); error ("multiple types in one declaration");
else if (declspecs->redefined_builtin_type) else if (declspecs->redefined_builtin_type)
{ {
if (!in_system_header) if (!in_system_header_at (input_location))
permerror (declspecs->locations[ds_redefined_builtin_type_spec], permerror (declspecs->locations[ds_redefined_builtin_type_spec],
"redeclaration of C++ built-in type %qT", "redeclaration of C++ built-in type %qT",
declspecs->redefined_builtin_type); declspecs->redefined_builtin_type);
@ -4292,7 +4293,8 @@ check_tag_decl (cp_decl_specifier_seq *declspecs,
/* Anonymous unions are objects, so they can have specifiers. */; /* Anonymous unions are objects, so they can have specifiers. */;
SET_ANON_AGGR_TYPE_P (declared_type); SET_ANON_AGGR_TYPE_P (declared_type);
if (TREE_CODE (declared_type) != UNION_TYPE && !in_system_header) if (TREE_CODE (declared_type) != UNION_TYPE
&& !in_system_header_at (input_location))
pedwarn (input_location, OPT_Wpedantic, "ISO C++ prohibits anonymous structs"); pedwarn (input_location, OPT_Wpedantic, "ISO C++ prohibits anonymous structs");
} }
@ -5846,7 +5848,7 @@ make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec)
/* We try to defer namespace-scope static constants so that they are /* We try to defer namespace-scope static constants so that they are
not emitted into the object file unnecessarily. */ not emitted into the object file unnecessarily. */
filename = input_filename; filename = LOCATION_FILE (input_location);
if (!DECL_VIRTUAL_P (decl) if (!DECL_VIRTUAL_P (decl)
&& TREE_READONLY (decl) && TREE_READONLY (decl)
&& DECL_INITIAL (decl) != NULL_TREE && DECL_INITIAL (decl) != NULL_TREE
@ -8309,7 +8311,7 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
indicated by the state of complain), so that indicated by the state of complain), so that
another substitution can be found. */ another substitution can be found. */
return error_mark_node; return error_mark_node;
else if (in_system_header) else if (in_system_header_at (input_location))
/* Allow them in system headers because glibc uses them. */; /* Allow them in system headers because glibc uses them. */;
else if (name) else if (name)
pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array %qD", name); pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array %qD", name);
@ -9096,7 +9098,7 @@ grokdeclarator (const cp_declarator *declarator,
if (type_was_error_mark_node) if (type_was_error_mark_node)
/* We've already issued an error, don't complain more. */; /* We've already issued an error, don't complain more. */;
else if (in_system_header || flag_ms_extensions) else if (in_system_header_at (input_location) || flag_ms_extensions)
/* Allow it, sigh. */; /* Allow it, sigh. */;
else if (! is_main) else if (! is_main)
permerror (input_location, "ISO C++ forbids declaration of %qs with no type", name); permerror (input_location, "ISO C++ forbids declaration of %qs with no type", name);
@ -9119,7 +9121,7 @@ grokdeclarator (const cp_declarator *declarator,
error ("%<__int128%> is not supported by this target"); error ("%<__int128%> is not supported by this target");
explicit_int128 = false; explicit_int128 = false;
} }
else if (pedantic && ! in_system_header) else if (pedantic && ! in_system_header_at (input_location))
pedwarn (input_location, OPT_Wpedantic, pedwarn (input_location, OPT_Wpedantic,
"ISO C++ does not support %<__int128%> for %qs", name); "ISO C++ does not support %<__int128%> for %qs", name);
} }

View File

@ -924,7 +924,7 @@ dump_global_iord (cxx_pretty_printer *pp, tree t)
else else
gcc_unreachable (); gcc_unreachable ();
pp_printf (pp, p, input_filename); pp_printf (pp, p, LOCATION_FILE (input_location));
} }
static void static void
@ -2804,7 +2804,7 @@ location_of (tree t)
if (DECL_P (t)) if (DECL_P (t))
return DECL_SOURCE_LOCATION (t); return DECL_SOURCE_LOCATION (t);
return EXPR_LOC_OR_HERE (t); return EXPR_LOC_OR_LOC (t, input_location);
} }
/* Now the interfaces from error et al to dump_type et al. Each takes an /* Now the interfaces from error et al to dump_type et al. Each takes an
@ -3463,7 +3463,7 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec,
void void
maybe_warn_cpp0x (cpp0x_warn_str str) maybe_warn_cpp0x (cpp0x_warn_str str)
{ {
if ((cxx_dialect == cxx98) && !in_system_header) if ((cxx_dialect == cxx98) && !in_system_header_at (input_location))
/* We really want to suppress this warning in system headers, /* We really want to suppress this warning in system headers,
because libstdc++ uses variadic templates even when we aren't because libstdc++ uses variadic templates even when we aren't
in C++0x mode. */ in C++0x mode. */

View File

@ -2319,7 +2319,7 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
{ {
if (complain & tf_error) if (complain & tf_error)
{ {
error_at (EXPR_LOC_OR_HERE (inner_nelts), error_at (EXPR_LOC_OR_LOC (inner_nelts, input_location),
"array size in operator new must be constant"); "array size in operator new must be constant");
cxx_constant_value(inner_nelts); cxx_constant_value(inner_nelts);
} }
@ -2347,7 +2347,7 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
&& !TREE_CONSTANT (maybe_constant_value (outer_nelts))) && !TREE_CONSTANT (maybe_constant_value (outer_nelts)))
{ {
if (complain & tf_warning_or_error) if (complain & tf_warning_or_error)
pedwarn(EXPR_LOC_OR_HERE (outer_nelts), OPT_Wvla, pedwarn(EXPR_LOC_OR_LOC (outer_nelts, input_location), OPT_Wvla,
"ISO C++ does not support variable-length array types"); "ISO C++ does not support variable-length array types");
else else
return error_mark_node; return error_mark_node;

View File

@ -352,18 +352,18 @@ handle_pragma_interface (cpp_reader* /*dfile*/)
if (fname == error_mark_node) if (fname == error_mark_node)
return; return;
else if (fname == 0) else if (fname == 0)
filename = lbasename (input_filename); filename = lbasename (LOCATION_FILE (input_location));
else else
filename = TREE_STRING_POINTER (fname); filename = TREE_STRING_POINTER (fname);
finfo = get_fileinfo (input_filename); finfo = get_fileinfo (LOCATION_FILE (input_location));
if (impl_file_chain == 0) if (impl_file_chain == 0)
{ {
/* If this is zero at this point, then we are /* If this is zero at this point, then we are
auto-implementing. */ auto-implementing. */
if (main_input_filename == 0) if (main_input_filename == 0)
main_input_filename = input_filename; main_input_filename = LOCATION_FILE (input_location);
} }
finfo->interface_only = interface_strcmp (filename); finfo->interface_only = interface_strcmp (filename);
@ -397,7 +397,7 @@ handle_pragma_implementation (cpp_reader* /*dfile*/)
if (main_input_filename) if (main_input_filename)
filename = main_input_filename; filename = main_input_filename;
else else
filename = input_filename; filename = LOCATION_FILE (input_location);
filename = lbasename (filename); filename = lbasename (filename);
} }
else else
@ -683,7 +683,8 @@ cxx_make_type (enum tree_code code)
/* Set up some flags that give proper default behavior. */ /* Set up some flags that give proper default behavior. */
if (RECORD_OR_UNION_CODE_P (code)) if (RECORD_OR_UNION_CODE_P (code))
{ {
struct c_fileinfo *finfo = get_fileinfo (input_filename); struct c_fileinfo *finfo = \
get_fileinfo (LOCATION_FILE (input_location));
SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, finfo->interface_unknown); SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, finfo->interface_unknown);
CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only; CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only;
} }
@ -711,5 +712,5 @@ in_main_input_context (void)
return filename_cmp (main_input_filename, return filename_cmp (main_input_filename,
LOCATION_FILE (tl->locus)) == 0; LOCATION_FILE (tl->locus)) == 0;
else else
return filename_cmp (main_input_filename, input_filename) == 0; return filename_cmp (main_input_filename, LOCATION_FILE (input_location)) == 0;
} }

View File

@ -1504,7 +1504,8 @@ push_binding_level (cp_binding_level *scope)
{ {
scope->binding_depth = binding_depth; scope->binding_depth = binding_depth;
indent (binding_depth); indent (binding_depth);
cp_binding_level_debug (scope, input_line, "push"); cp_binding_level_debug (scope, LOCATION_LINE (input_location),
"push");
binding_depth++; binding_depth++;
} }
} }
@ -1590,7 +1591,8 @@ leave_scope (void)
if (ENABLE_SCOPE_CHECKING) if (ENABLE_SCOPE_CHECKING)
{ {
indent (--binding_depth); indent (--binding_depth);
cp_binding_level_debug (scope, input_line, "leave"); cp_binding_level_debug (scope, LOCATION_LINE (input_location),
"leave");
} }
/* Move one nesting level up. */ /* Move one nesting level up. */
@ -1639,7 +1641,7 @@ resume_scope (cp_binding_level* b)
{ {
b->binding_depth = binding_depth; b->binding_depth = binding_depth;
indent (binding_depth); indent (binding_depth);
cp_binding_level_debug (b, input_line, "resume"); cp_binding_level_debug (b, LOCATION_LINE (input_location), "resume");
binding_depth++; binding_depth++;
} }
} }

View File

@ -5088,7 +5088,8 @@ cp_parser_unqualified_id (cp_parser* parser,
{ {
/* 17.6.3.3.5 */ /* 17.6.3.3.5 */
const char *name = UDLIT_OP_SUFFIX (id); const char *name = UDLIT_OP_SUFFIX (id);
if (name[0] != '_' && !in_system_header && declarator_p) if (name[0] != '_' && !in_system_header_at (input_location)
&& declarator_p)
warning (0, "literal operator suffixes not preceded by %<_%>" warning (0, "literal operator suffixes not preceded by %<_%>"
" are reserved for future standardization"); " are reserved for future standardization");
} }
@ -7686,7 +7687,7 @@ cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p,
/* Warn about old-style casts, if so requested. */ /* Warn about old-style casts, if so requested. */
if (warn_old_style_cast if (warn_old_style_cast
&& !in_system_header && !in_system_header_at (input_location)
&& !VOID_TYPE_P (type) && !VOID_TYPE_P (type)
&& current_lang_name != lang_name_c) && current_lang_name != lang_name_c)
warning (OPT_Wold_style_cast, "use of old-style cast"); warning (OPT_Wold_style_cast, "use of old-style cast");
@ -10765,7 +10766,7 @@ cp_parser_declaration_seq_opt (cp_parser* parser)
/* A declaration consisting of a single semicolon is /* A declaration consisting of a single semicolon is
invalid. Allow it unless we're being pedantic. */ invalid. Allow it unless we're being pedantic. */
cp_lexer_consume_token (parser->lexer); cp_lexer_consume_token (parser->lexer);
if (!in_system_header) if (!in_system_header_at (input_location))
pedwarn (input_location, OPT_Wpedantic, "extra %<;%>"); pedwarn (input_location, OPT_Wpedantic, "extra %<;%>");
continue; continue;
} }
@ -15527,7 +15528,7 @@ cp_parser_enumerator_list (cp_parser* parser, tree type)
/* If the next token is a `}', there is a trailing comma. */ /* If the next token is a `}', there is a trailing comma. */
if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE))
{ {
if (cxx_dialect < cxx11 && !in_system_header) if (cxx_dialect < cxx11 && !in_system_header_at (input_location))
pedwarn (input_location, OPT_Wpedantic, pedwarn (input_location, OPT_Wpedantic,
"comma at end of enumerator list"); "comma at end of enumerator list");
break; break;
@ -18056,7 +18057,8 @@ cp_parser_parameter_declaration_clause (cp_parser* parser)
/* There are no parameters. */ /* There are no parameters. */
{ {
#ifndef NO_IMPLICIT_EXTERN_C #ifndef NO_IMPLICIT_EXTERN_C
if (in_system_header && current_class_type == NULL if (in_system_header_at (input_location)
&& current_class_type == NULL
&& current_lang_name == lang_name_c) && current_lang_name == lang_name_c)
return NULL_TREE; return NULL_TREE;
else else
@ -20793,7 +20795,7 @@ cp_parser_exception_specification_opt (cp_parser* parser)
#if 0 #if 0
/* Enable this once a lot of code has transitioned to noexcept? */ /* Enable this once a lot of code has transitioned to noexcept? */
if (cxx_dialect >= cxx11 && !in_system_header) if (cxx_dialect >= cxx11 && !in_system_header_at (input_location))
warning (OPT_Wdeprecated, "dynamic exception specifications are " warning (OPT_Wdeprecated, "dynamic exception specifications are "
"deprecated in C++0x; use %<noexcept%> instead"); "deprecated in C++0x; use %<noexcept%> instead");
#endif #endif

View File

@ -5437,7 +5437,7 @@ unify_arg_conversion (bool explain_p, tree to_type,
tree from_type, tree arg) tree from_type, tree arg)
{ {
if (explain_p) if (explain_p)
inform (EXPR_LOC_OR_HERE (arg), inform (EXPR_LOC_OR_LOC (arg, input_location),
" cannot convert %qE (type %qT) to type %qT", " cannot convert %qE (type %qT) to type %qT",
arg, from_type, to_type); arg, from_type, to_type);
return 1; return 1;
@ -5677,7 +5677,7 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
return NULL_TREE; return NULL_TREE;
expr = cxx_constant_value (expr); expr = cxx_constant_value (expr);
if (errorcount > errs || warningcount + werrorcount > warns) if (errorcount > errs || warningcount + werrorcount > warns)
inform (EXPR_LOC_OR_HERE (expr), inform (EXPR_LOC_OR_LOC (expr, input_location),
"in template argument for type %qT ", type); "in template argument for type %qT ", type);
if (expr == error_mark_node) if (expr == error_mark_node)
return NULL_TREE; return NULL_TREE;
@ -8093,7 +8093,7 @@ push_tinst_level (tree d)
new_level->decl = d; new_level->decl = d;
new_level->locus = input_location; new_level->locus = input_location;
new_level->errors = errorcount+sorrycount; new_level->errors = errorcount+sorrycount;
new_level->in_system_header_p = in_system_header; new_level->in_system_header_p = in_system_header_at (input_location);
new_level->next = current_tinst_level; new_level->next = current_tinst_level;
current_tinst_level = new_level; current_tinst_level = new_level;
@ -14505,7 +14505,7 @@ tsubst_copy_and_build (tree t,
fn = TREE_OPERAND (fn, 1); fn = TREE_OPERAND (fn, 1);
if (is_overloaded_fn (fn)) if (is_overloaded_fn (fn))
fn = get_first_fn (fn); fn = get_first_fn (fn);
if (permerror (EXPR_LOC_OR_HERE (t), if (permerror (EXPR_LOC_OR_LOC (t, input_location),
"%qD was not declared in this scope, " "%qD was not declared in this scope, "
"and no declarations were found by " "and no declarations were found by "
"argument-dependent lookup at the point " "argument-dependent lookup at the point "
@ -14515,15 +14515,17 @@ tsubst_copy_and_build (tree t,
/* Can't say anything more. */; /* Can't say anything more. */;
else if (DECL_CLASS_SCOPE_P (fn)) else if (DECL_CLASS_SCOPE_P (fn))
{ {
inform (EXPR_LOC_OR_HERE (t), location_t loc = EXPR_LOC_OR_LOC (t,
input_location);
inform (loc,
"declarations in dependent base %qT are " "declarations in dependent base %qT are "
"not found by unqualified lookup", "not found by unqualified lookup",
DECL_CLASS_CONTEXT (fn)); DECL_CLASS_CONTEXT (fn));
if (current_class_ptr) if (current_class_ptr)
inform (EXPR_LOC_OR_HERE (t), inform (loc,
"use %<this->%D%> instead", function); "use %<this->%D%> instead", function);
else else
inform (EXPR_LOC_OR_HERE (t), inform (loc,
"use %<%T::%D%> instead", "use %<%T::%D%> instead",
current_class_name, function); current_class_name, function);
} }
@ -18807,7 +18809,7 @@ do_decl_instantiation (tree decl, tree storage)
; ;
else if (storage == ridpointers[(int) RID_EXTERN]) else if (storage == ridpointers[(int) RID_EXTERN])
{ {
if (!in_system_header && (cxx_dialect == cxx98)) if (!in_system_header_at (input_location) && (cxx_dialect == cxx98))
pedwarn (input_location, OPT_Wpedantic, pedwarn (input_location, OPT_Wpedantic,
"ISO C++ 1998 forbids the use of %<extern%> on explicit " "ISO C++ 1998 forbids the use of %<extern%> on explicit "
"instantiations"); "instantiations");
@ -18900,7 +18902,7 @@ do_type_instantiation (tree t, tree storage, tsubst_flags_t complain)
if (storage != NULL_TREE) if (storage != NULL_TREE)
{ {
if (!in_system_header) if (!in_system_header_at (input_location))
{ {
if (storage == ridpointers[(int) RID_EXTERN]) if (storage == ridpointers[(int) RID_EXTERN])
{ {

View File

@ -2146,7 +2146,7 @@ finish_call_expr (tree fn, vec<tree, va_gc> **args, bool disallow_virtual,
&& type_dependent_expression_p (current_class_ref))) && type_dependent_expression_p (current_class_ref)))
{ {
result = build_nt_call_vec (fn, *args); result = build_nt_call_vec (fn, *args);
SET_EXPR_LOCATION (result, EXPR_LOC_OR_HERE (fn)); SET_EXPR_LOCATION (result, EXPR_LOC_OR_LOC (fn, input_location));
KOENIG_LOOKUP_P (result) = koenig_p; KOENIG_LOOKUP_P (result) = koenig_p;
if (cfun) if (cfun)
{ {
@ -2721,7 +2721,8 @@ begin_class_definition (tree t)
before. */ before. */
if (! TYPE_ANONYMOUS_P (t)) if (! TYPE_ANONYMOUS_P (t))
{ {
struct c_fileinfo *finfo = get_fileinfo (input_filename); struct c_fileinfo *finfo = \
get_fileinfo (LOCATION_FILE (input_location));
CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only; CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only;
SET_CLASSTYPE_INTERFACE_UNKNOWN_X SET_CLASSTYPE_INTERFACE_UNKNOWN_X
(t, finfo->interface_unknown); (t, finfo->interface_unknown);
@ -8266,7 +8267,7 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t,
bool allow_non_constant, bool addr, bool allow_non_constant, bool addr,
bool *non_constant_p, bool *overflow_p) bool *non_constant_p, bool *overflow_p)
{ {
location_t loc = EXPR_LOC_OR_HERE (t); location_t loc = EXPR_LOC_OR_LOC (t, input_location);
tree fun = get_function_named_in_call (t); tree fun = get_function_named_in_call (t);
tree result; tree result;
constexpr_call new_call = { NULL, NULL, NULL, 0 }; constexpr_call new_call = { NULL, NULL, NULL, 0 };
@ -9647,7 +9648,7 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
&& !integer_zerop (op)) && !integer_zerop (op))
{ {
if (!allow_non_constant) if (!allow_non_constant)
error_at (EXPR_LOC_OR_HERE (t), error_at (EXPR_LOC_OR_LOC (t, input_location),
"reinterpret_cast from integer to pointer"); "reinterpret_cast from integer to pointer");
*non_constant_p = true; *non_constant_p = true;
return t; return t;
@ -9693,7 +9694,7 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
case EXPR_STMT: case EXPR_STMT:
case OFFSET_REF: case OFFSET_REF:
if (!allow_non_constant) if (!allow_non_constant)
error_at (EXPR_LOC_OR_HERE (t), error_at (EXPR_LOC_OR_LOC (t, input_location),
"expression %qE is not a constant-expression", t); "expression %qE is not a constant-expression", t);
*non_constant_p = true; *non_constant_p = true;
break; break;
@ -9966,7 +9967,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
{ {
if (flags & tf_error) if (flags & tf_error)
{ {
error_at (EXPR_LOC_OR_HERE (t), error_at (EXPR_LOC_OR_LOC (t, input_location),
"call to non-constexpr function %qD", fun); "call to non-constexpr function %qD", fun);
explain_invalid_constexpr_fn (fun); explain_invalid_constexpr_fn (fun);
} }
@ -10058,7 +10059,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
&& !integer_zerop (from)) && !integer_zerop (from))
{ {
if (flags & tf_error) if (flags & tf_error)
error_at (EXPR_LOC_OR_HERE (t), error_at (EXPR_LOC_OR_LOC (t, input_location),
"reinterpret_cast from integer to pointer"); "reinterpret_cast from integer to pointer");
return false; return false;
} }

View File

@ -1883,7 +1883,7 @@ decay_conversion (tree exp, tsubst_flags_t complain)
{ {
tree type; tree type;
enum tree_code code; enum tree_code code;
location_t loc = EXPR_LOC_OR_HERE (exp); location_t loc = EXPR_LOC_OR_LOC (exp, input_location);
type = TREE_TYPE (exp); type = TREE_TYPE (exp);
if (type == error_mark_node) if (type == error_mark_node)
@ -2133,6 +2133,8 @@ static tree
rationalize_conditional_expr (enum tree_code code, tree t, rationalize_conditional_expr (enum tree_code code, tree t,
tsubst_flags_t complain) tsubst_flags_t complain)
{ {
location_t loc = EXPR_LOC_OR_LOC (t, input_location);
/* For MIN_EXPR or MAX_EXPR, fold-const.c has arranged things so that /* For MIN_EXPR or MAX_EXPR, fold-const.c has arranged things so that
the first operand is always the one to be used if both operands the first operand is always the one to be used if both operands
are equal, so we know what conditional expression this used to be. */ are equal, so we know what conditional expression this used to be. */
@ -2145,8 +2147,8 @@ rationalize_conditional_expr (enum tree_code code, tree t,
gcc_assert (!TREE_SIDE_EFFECTS (op0) gcc_assert (!TREE_SIDE_EFFECTS (op0)
&& !TREE_SIDE_EFFECTS (op1)); && !TREE_SIDE_EFFECTS (op1));
return return
build_conditional_expr (EXPR_LOC_OR_HERE (t), build_conditional_expr (loc,
build_x_binary_op (EXPR_LOC_OR_HERE (t), build_x_binary_op (loc,
(TREE_CODE (t) == MIN_EXPR (TREE_CODE (t) == MIN_EXPR
? LE_EXPR : GE_EXPR), ? LE_EXPR : GE_EXPR),
op0, TREE_CODE (op0), op0, TREE_CODE (op0),
@ -2159,7 +2161,7 @@ rationalize_conditional_expr (enum tree_code code, tree t,
} }
return return
build_conditional_expr (EXPR_LOC_OR_HERE (t), TREE_OPERAND (t, 0), build_conditional_expr (loc, TREE_OPERAND (t, 0),
cp_build_unary_op (code, TREE_OPERAND (t, 1), 0, cp_build_unary_op (code, TREE_OPERAND (t, 1), 0,
complain), complain),
cp_build_unary_op (code, TREE_OPERAND (t, 2), 0, cp_build_unary_op (code, TREE_OPERAND (t, 2), 0,
@ -6042,8 +6044,9 @@ build_x_compound_expr_from_list (tree list, expr_list_kind exp,
&& !CONSTRUCTOR_IS_DIRECT_INIT (expr)) && !CONSTRUCTOR_IS_DIRECT_INIT (expr))
{ {
if (complain & tf_error) if (complain & tf_error)
pedwarn (EXPR_LOC_OR_HERE (expr), 0, "list-initializer for " pedwarn (EXPR_LOC_OR_LOC (expr, input_location), 0,
"non-class type must not be parenthesized"); "list-initializer for non-class type must not "
"be parenthesized");
else else
return error_mark_node; return error_mark_node;
} }
@ -8101,7 +8104,7 @@ convert_for_assignment (tree type, tree rhs,
&& TREE_CODE (TREE_TYPE (rhs)) != BOOLEAN_TYPE && TREE_CODE (TREE_TYPE (rhs)) != BOOLEAN_TYPE
&& (complain & tf_warning)) && (complain & tf_warning))
{ {
location_t loc = EXPR_LOC_OR_HERE (rhs); location_t loc = EXPR_LOC_OR_LOC (rhs, input_location);
warning_at (loc, OPT_Wparentheses, warning_at (loc, OPT_Wparentheses,
"suggest parentheses around assignment used as truth value"); "suggest parentheses around assignment used as truth value");

View File

@ -896,11 +896,11 @@ check_narrowing (tree type, tree init)
if (!ok) if (!ok)
{ {
if (cxx_dialect >= cxx11) if (cxx_dialect >= cxx11)
pedwarn (EXPR_LOC_OR_HERE (init), OPT_Wnarrowing, pedwarn (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
"narrowing conversion of %qE from %qT to %qT inside { }", "narrowing conversion of %qE from %qT to %qT inside { }",
init, ftype, type); init, ftype, type);
else else
warning_at (EXPR_LOC_OR_HERE (init), OPT_Wnarrowing, warning_at (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
"narrowing conversion of %qE from %qT to %qT inside { } " "narrowing conversion of %qE from %qT to %qT inside { } "
"is ill-formed in C++11", init, ftype, type); "is ill-formed in C++11", init, ftype, type);
} }

View File

@ -1,3 +1,8 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* trans.c (trans_runtime_error_vararg): Remove use of input_line
macro.
2013-11-17 Andrew MacLeod <amacleod@redhat.com> 2013-11-17 Andrew MacLeod <amacleod@redhat.com>
* fortran/trans-intrinsic.c: Include tree-nested.h. * fortran/trans-intrinsic.c: Include tree-nested.h.

View File

@ -424,7 +424,7 @@ trans_runtime_error_vararg (bool error, locus* where, const char* msgid,
} }
else else
asprintf (&message, "In file '%s', around line %d", asprintf (&message, "In file '%s', around line %d",
gfc_source_file, input_line + 1); gfc_source_file, LOCATION_LINE (input_location) + 1);
arg = gfc_build_addr_expr (pchar_type_node, arg = gfc_build_addr_expr (pchar_type_node,
gfc_build_localized_cstring_const (message)); gfc_build_localized_cstring_const (message));

View File

@ -515,7 +515,7 @@ internal_get_tmp_var (tree val, gimple_seq *pre_p, gimple_seq *post_p,
mod = build2 (INIT_EXPR, TREE_TYPE (t), t, unshare_expr (val)); mod = build2 (INIT_EXPR, TREE_TYPE (t), t, unshare_expr (val));
SET_EXPR_LOCATION (mod, EXPR_LOC_OR_HERE (val)); SET_EXPR_LOCATION (mod, EXPR_LOC_OR_LOC (val, input_location));
/* gimplify_modify_expr might want to reduce this further. */ /* gimplify_modify_expr might want to reduce this further. */
gimplify_and_add (mod, pre_p); gimplify_and_add (mod, pre_p);
@ -2514,7 +2514,7 @@ shortcut_cond_expr (tree expr)
while (TREE_CODE (pred) == TRUTH_ANDIF_EXPR) while (TREE_CODE (pred) == TRUTH_ANDIF_EXPR)
{ {
/* Keep the original source location on the first 'if'. */ /* Keep the original source location on the first 'if'. */
location_t locus = EXPR_LOC_OR_HERE (expr); location_t locus = EXPR_LOC_OR_LOC (expr, input_location);
TREE_OPERAND (expr, 0) = TREE_OPERAND (pred, 1); TREE_OPERAND (expr, 0) = TREE_OPERAND (pred, 1);
/* Set the source location of the && on the second 'if'. */ /* Set the source location of the && on the second 'if'. */
if (EXPR_HAS_LOCATION (pred)) if (EXPR_HAS_LOCATION (pred))
@ -2536,7 +2536,7 @@ shortcut_cond_expr (tree expr)
while (TREE_CODE (pred) == TRUTH_ORIF_EXPR) while (TREE_CODE (pred) == TRUTH_ORIF_EXPR)
{ {
/* Keep the original source location on the first 'if'. */ /* Keep the original source location on the first 'if'. */
location_t locus = EXPR_LOC_OR_HERE (expr); location_t locus = EXPR_LOC_OR_LOC (expr, input_location);
TREE_OPERAND (expr, 0) = TREE_OPERAND (pred, 1); TREE_OPERAND (expr, 0) = TREE_OPERAND (pred, 1);
/* Set the source location of the || on the second 'if'. */ /* Set the source location of the || on the second 'if'. */
if (EXPR_HAS_LOCATION (pred)) if (EXPR_HAS_LOCATION (pred))
@ -2600,7 +2600,7 @@ shortcut_cond_expr (tree expr)
/* If there was nothing else in our arms, just forward the label(s). */ /* If there was nothing else in our arms, just forward the label(s). */
if (!then_se && !else_se) if (!then_se && !else_se)
return shortcut_cond_r (pred, true_label_p, false_label_p, return shortcut_cond_r (pred, true_label_p, false_label_p,
EXPR_LOC_OR_HERE (expr)); EXPR_LOC_OR_LOC (expr, input_location));
/* If our last subexpression already has a terminal label, reuse it. */ /* If our last subexpression already has a terminal label, reuse it. */
if (else_se) if (else_se)
@ -2632,7 +2632,7 @@ shortcut_cond_expr (tree expr)
jump_over_else = block_may_fallthru (then_); jump_over_else = block_may_fallthru (then_);
pred = shortcut_cond_r (pred, true_label_p, false_label_p, pred = shortcut_cond_r (pred, true_label_p, false_label_p,
EXPR_LOC_OR_HERE (expr)); EXPR_LOC_OR_LOC (expr, input_location));
expr = NULL; expr = NULL;
append_to_statement_list (pred, &expr); append_to_statement_list (pred, &expr);

View File

@ -57,11 +57,8 @@ extern location_t input_location;
((tree) ((IS_ADHOC_LOC (LOC)) ? get_data_from_adhoc_loc (line_table, (LOC)) \ ((tree) ((IS_ADHOC_LOC (LOC)) ? get_data_from_adhoc_loc (line_table, (LOC)) \
: NULL)) : NULL))
#define input_line LOCATION_LINE (input_location)
#define input_filename LOCATION_FILE (input_location)
#define in_system_header_at(LOC) \ #define in_system_header_at(LOC) \
((linemap_location_in_system_header_p (line_table, LOC))) ((linemap_location_in_system_header_p (line_table, LOC)))
#define in_system_header (in_system_header_at (input_location))
void dump_line_table_statistics (void); void dump_line_table_statistics (void);

View File

@ -1,3 +1,13 @@
2013-11-22 David Malcolm <dmalcolm@redhat.com>
* class.c (maybe_layout_super_class): Update comment.
* decl.c (java_add_stmt): Remove use of input_filename macro.
* jcf-parse.c (set_source_filename): Remove use of
input_filename macro.
(parse_class_file): Remove use of input_line and input_filename
macros.
(java_parse_file): Remove use of input_filename macro.
2013-11-18 Richard Sandiford <rdsandiford@googlemail.com> 2013-11-18 Richard Sandiford <rdsandiford@googlemail.com>
* class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi * class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi

View File

@ -2415,7 +2415,7 @@ maybe_layout_super_class (tree super_class, tree this_class ATTRIBUTE_UNUSED)
} }
/* safe_layout_class just makes sure that we can load a class without /* safe_layout_class just makes sure that we can load a class without
disrupting the current_class, input_file, input_line, etc, information disrupting the current_class, input_location, etc, information
about the class processed currently. */ about the class processed currently. */
void void

View File

@ -2018,7 +2018,7 @@ java_add_stmt (tree new_stmt)
tree stmts = current_binding_level->stmts; tree stmts = current_binding_level->stmts;
tree_stmt_iterator i; tree_stmt_iterator i;
if (input_filename) if (LOCATION_FILE (input_location))
walk_tree (&new_stmt, set_input_location, NULL, NULL); walk_tree (&new_stmt, set_input_location, NULL, NULL);
if (stmts == NULL) if (stmts == NULL)

View File

@ -313,13 +313,14 @@ set_source_filename (JCF *jcf, int index)
{ {
tree sfname_id = get_name_constant (jcf, index); tree sfname_id = get_name_constant (jcf, index);
const char *sfname = IDENTIFIER_POINTER (sfname_id); const char *sfname = IDENTIFIER_POINTER (sfname_id);
const char *old_filename = input_filename; const char *old_filename = LOCATION_FILE (input_location);
int new_len = IDENTIFIER_LENGTH (sfname_id); int new_len = IDENTIFIER_LENGTH (sfname_id);
if (old_filename != NULL) if (old_filename != NULL)
{ {
int old_len = strlen (old_filename); int old_len = strlen (old_filename);
/* Use the current input_filename (derived from the class name) /* Use the filename from current input_location (derived from the
if it has a directory prefix, but otherwise matches sfname. */ class name) if it has a directory prefix, but otherwise matches
sfname. */
if (old_len > new_len if (old_len > new_len
&& filename_cmp (sfname, old_filename + old_len - new_len) == 0 && filename_cmp (sfname, old_filename + old_len - new_len) == 0
&& (old_filename[old_len - new_len - 1] == '/' && (old_filename[old_len - new_len - 1] == '/'
@ -1560,7 +1561,8 @@ parse_class_file (void)
linemap_add (line_table, LC_ENTER, 0, loc.file, loc.line); linemap_add (line_table, LC_ENTER, 0, loc.file, loc.line);
} }
file_start_location = input_location; file_start_location = input_location;
(*debug_hooks->start_source_file) (input_line, input_filename); (*debug_hooks->start_source_file) (LOCATION_LINE (input_location),
LOCATION_FILE (input_location));
java_mark_class_local (current_class); java_mark_class_local (current_class);
@ -1618,7 +1620,8 @@ parse_class_file (void)
for (ptr += 2; --i >= 0; ptr += 4) for (ptr += 2; --i >= 0; ptr += 4)
{ {
int line = GET_u2 (ptr); int line = GET_u2 (ptr);
/* Set initial input_line to smallest linenumber. /* Set initial line of input_location to smallest
* linenumber.
* Needs to be set before init_function_start. */ * Needs to be set before init_function_start. */
if (min_line == 0 || line < min_line) if (min_line == 0 || line < min_line)
min_line = line; min_line = line;
@ -1748,7 +1751,7 @@ java_parse_file (void)
int avail = 2000; int avail = 2000;
finput = fopen (main_input_filename, "r"); finput = fopen (main_input_filename, "r");
if (finput == NULL) if (finput == NULL)
fatal_error ("can%'t open %s: %m", input_filename); fatal_error ("can%'t open %s: %m", LOCATION_FILE (input_location));
list = XNEWVEC (char, avail); list = XNEWVEC (char, avail);
next = list; next = list;
for (;;) for (;;)
@ -1767,7 +1770,8 @@ java_parse_file (void)
if (count == 0) if (count == 0)
{ {
if (! feof (finput)) if (! feof (finput))
fatal_error ("error closing %s: %m", input_filename); fatal_error ("error closing %s: %m",
LOCATION_FILE (input_location));
*next = '\0'; *next = '\0';
break; break;
} }

View File

@ -39,7 +39,8 @@ diagnostic_report_current_function (diagnostic_context *context,
diagnostic_info *diagnostic) diagnostic_info *diagnostic)
{ {
diagnostic_report_current_module (context, diagnostic->location); diagnostic_report_current_module (context, diagnostic->location);
lang_hooks.print_error_function (context, input_filename, diagnostic); lang_hooks.print_error_function (context, LOCATION_FILE (input_location),
diagnostic);
} }
static void static void

View File

@ -9101,7 +9101,7 @@ get_file_function_name (const char *type)
{ {
const char *file = main_input_filename; const char *file = main_input_filename;
if (! file) if (! file)
file = input_filename; file = LOCATION_FILE (input_location);
/* Just use the file's basename, because the full pathname /* Just use the file's basename, because the full pathname
might be quite long. */ might be quite long. */
p = q = ASTRDUP (lbasename (file)); p = q = ASTRDUP (lbasename (file));
@ -9118,7 +9118,7 @@ get_file_function_name (const char *type)
if (! name) if (! name)
name = ""; name = "";
if (! file) if (! file)
file = input_filename; file = LOCATION_FILE (input_location);
len = strlen (file); len = strlen (file);
q = (char *) alloca (9 + 17 + len + 1); q = (char *) alloca (9 + 17 + len + 1);

View File

@ -1044,8 +1044,6 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
!= UNKNOWN_LOCATION) != UNKNOWN_LOCATION)
/* The location to be used in a diagnostic about this expression. Do not /* The location to be used in a diagnostic about this expression. Do not
use this macro if the location will be assigned to other expressions. */ use this macro if the location will be assigned to other expressions. */
#define EXPR_LOC_OR_HERE(NODE) (EXPR_HAS_LOCATION (NODE) \
? (NODE)->exp.locus : input_location)
#define EXPR_LOC_OR_LOC(NODE, LOCUS) (EXPR_HAS_LOCATION (NODE) \ #define EXPR_LOC_OR_LOC(NODE, LOCUS) (EXPR_HAS_LOCATION (NODE) \
? (NODE)->exp.locus : (LOCUS)) ? (NODE)->exp.locus : (LOCUS))
#define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus) #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)