aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/trans.c4
-rw-r--r--gcc/ada/utils.c6
-rw-r--r--gcc/c-aux-info.c4
-rw-r--r--gcc/c-decl.c24
-rw-r--r--gcc/c-parse.in10
-rw-r--r--gcc/config/alpha/alpha.c6
-rw-r--r--gcc/config/mips/mips.c4
-rw-r--r--gcc/coverage.c8
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/class.c2
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/cp/decl.c21
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/cp/error.c2
-rw-r--r--gcc/cp/init.c2
-rw-r--r--gcc/cp/method.c2
-rw-r--r--gcc/cp/optimize.c4
-rw-r--r--gcc/cp/pt.c32
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/dbxout.c4
-rw-r--r--gcc/diagnostic.c2
-rw-r--r--gcc/doc/c-tree.texi4
-rw-r--r--gcc/dwarf2out.c20
-rw-r--r--gcc/dwarfout.c6
-rw-r--r--gcc/f/ChangeLog5
-rw-r--r--gcc/f/com.c7
-rw-r--r--gcc/f/ste.c4
-rw-r--r--gcc/function.c4
-rw-r--r--gcc/integrate.c4
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/class.c11
-rw-r--r--gcc/java/decl.c5
-rw-r--r--gcc/java/jcf-parse.c10
-rw-r--r--gcc/java/jcf-write.c4
-rw-r--r--gcc/java/parse.y31
-rw-r--r--gcc/java/resource.c3
-rw-r--r--gcc/objc/objc-act.c12
-rw-r--r--gcc/print-tree.c2
-rw-r--r--gcc/stmt.c2
-rw-r--r--gcc/toplev.c6
-rw-r--r--gcc/tree-dump.c8
-rw-r--r--gcc/tree-inline.c4
-rw-r--r--gcc/tree-optimize.c2
-rw-r--r--gcc/tree.c2
-rw-r--r--gcc/tree.def2
-rw-r--r--gcc/tree.h30
-rw-r--r--gcc/treelang/ChangeLog5
-rw-r--r--gcc/treelang/treetree.c13
-rw-r--r--gcc/xcoffout.c2
52 files changed, 210 insertions, 171 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c14137b..a288901 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
+ (TREE_FILENAME, TREE_LINENO): Likewise.
+ (set_tree_locus, copy_tree_locus, set_tree_file_line): New.
+ (TREE_LOCUS_SET_P): New.
+ * c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
+ diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
+ print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
+ tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
+ config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Update to match.
+
2003-09-21 Nathanael Nerode <neroden@gcc.gnu.org>
* config/vax/vax-protos.h: Convert to ISO C90.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2dfbc37..51ba6b4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * trans.c, utils.c: Update for DECL_SOURCE_LOCATION rename and
+ change to const.
+
2003-09-04 Michael Matz <matz@suse.de>
* misc.c: Include "target.h".
diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c
index 8e6f9ac..889b267 100644
--- a/gcc/ada/trans.c
+++ b/gcc/ada/trans.c
@@ -2611,7 +2611,7 @@ tree_transform (gnat_node)
the body so that the line number notes are written
correctly. */
set_lineno (gnat_node, 0);
- DECL_SOURCE_LOCATION (gnu_subprog_decl) = input_location;
+ set_tree_locus (gnu_subprog_decl, input_location);
begin_subprog_body (gnu_subprog_decl);
set_lineno (gnat_node, 1);
@@ -5333,7 +5333,7 @@ build_unit_elab (gnat_unit, body_p, gnu_elab_list)
{
tree lhs = TREE_PURPOSE (gnu_elab_list);
- input_location = DECL_SOURCE_LOCATION (lhs);
+ input_location = TREE_LOCUS (lhs);
/* If LHS has a padded type, convert it to the unpadded type
so the assignment is done properly. */
diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c
index 186b0fd..eddfb32 100644
--- a/gcc/ada/utils.c
+++ b/gcc/ada/utils.c
@@ -1655,9 +1655,9 @@ create_label_decl (label_name)
{
tree label_decl = build_decl (LABEL_DECL, label_name, void_type_node);
- DECL_CONTEXT (label_decl) = current_function_decl;
- DECL_MODE (label_decl) = VOIDmode;
- DECL_SOURCE_LOCATION (label_decl) = input_location;
+ DECL_CONTEXT (label_decl) = current_function_decl;
+ DECL_MODE (label_decl) = VOIDmode;
+ set_tree_locus (label_decl, input_location);
return label_decl;
}
diff --git a/gcc/c-aux-info.c b/gcc/c-aux-info.c
index e785ade..0a14839 100644
--- a/gcc/c-aux-info.c
+++ b/gcc/c-aux-info.c
@@ -569,8 +569,8 @@ gen_aux_info_record (tree fndecl, int is_definition, int is_implicit,
/* Write the actual line of auxiliary info. */
fprintf (aux_info_file, "/* %s:%d:%c%c */ %s;",
- DECL_SOURCE_FILE (fndecl),
- DECL_SOURCE_LINE (fndecl),
+ TREE_FILENAME (fndecl),
+ TREE_LINENO (fndecl),
(is_implicit) ? 'I' : (is_prototyped) ? 'N' : 'O',
(is_definition) ? 'F' : 'C',
gen_decl (fndecl, is_definition, ansi));
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index db35f9a..f58f560 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -905,8 +905,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
return 0;
}
}
- else if (TREE_CODE (olddecl) == FUNCTION_DECL
- && DECL_SOURCE_LINE (olddecl) == 0)
+ else if (TREE_CODE (olddecl) == FUNCTION_DECL && !TREE_LOCUS_SET_P (olddecl))
{
/* A function declaration for a predeclared function
that isn't actually built in. */
@@ -1175,7 +1174,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
}
/* Optionally warn about more than one declaration for the same name. */
- if (errmsg == 0 && warn_redundant_decls && DECL_SOURCE_LINE (olddecl) != 0
+ if (errmsg == 0 && warn_redundant_decls && TREE_LOCUS_SET_P (olddecl)
/* Don't warn about a function declaration
followed by a definition. */
&& !(TREE_CODE (newdecl) == FUNCTION_DECL && DECL_INITIAL (newdecl) != 0
@@ -1272,10 +1271,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
information so that meaningful diagnostics can be given. */
if (DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0
&& ! different_binding_level)
- {
- DECL_SOURCE_LINE (newdecl) = DECL_SOURCE_LINE (olddecl);
- DECL_SOURCE_FILE (newdecl) = DECL_SOURCE_FILE (olddecl);
- }
+ copy_tree_locus (newdecl, olddecl);
/* Merge the unused-warning information. */
if (DECL_IN_SYSTEM_HEADER (olddecl))
@@ -1525,7 +1521,7 @@ warn_if_shadowing (tree x, tree old)
/* Shadow warnings not wanted? */
|| !warn_shadow
/* No shadow warnings for internally generated vars. */
- || DECL_SOURCE_LINE (x) == 0
+ || !TREE_LOCUS_SET_P (x)
/* No shadow warnings for vars made for inlining. */
|| DECL_FROM_INLINE (x)
/* Don't warn about the parm names in function declarator
@@ -1593,7 +1589,7 @@ warn_if_shadowing (tree x, tree old)
static void
clone_underlying_type (tree x)
{
- if (DECL_SOURCE_LINE (x) == 0)
+ if (!TREE_LOCUS_SET_P (x))
{
if (TYPE_NAME (TREE_TYPE (x)) == 0)
TYPE_NAME (TREE_TYPE (x)) = x;
@@ -1948,7 +1944,7 @@ make_label (tree name, location_t location)
DECL_CONTEXT (label) = current_function_decl;
DECL_MODE (label) = VOIDmode;
- DECL_SOURCE_LOCATION (label) = location;
+ set_tree_locus (label, location);
return label;
}
@@ -1995,7 +1991,7 @@ lookup_label (tree name)
location to point here, for better diagnostics if it
turns out not to have been defined. */
if (!TREE_USED (label))
- DECL_SOURCE_LOCATION (label) = input_location;
+ set_tree_locus (label, input_location);
return label;
}
@@ -2074,7 +2070,7 @@ define_label (location_t location, tree name)
/* The label has been used or declared already in this function,
but not defined. Update its location to point to this
definition. */
- DECL_SOURCE_LOCATION (label) = location;
+ set_tree_locus (label, location);
}
else
{
@@ -5462,7 +5458,7 @@ start_function (tree declspecs, tree declarator, tree attributes)
&& TYPE_ARG_TYPES (TREE_TYPE (decl1)) == 0)
{
TREE_TYPE (decl1) = TREE_TYPE (old_decl);
- current_function_prototype_locus = DECL_SOURCE_LOCATION (old_decl);
+ current_function_prototype_locus = TREE_LOCUS (old_decl);
}
/* Optionally warn of old-fashioned def with no previous prototype. */
@@ -5755,7 +5751,7 @@ store_parm_decls_oldstyle (void)
{
decl = build_decl (PARM_DECL, TREE_VALUE (parm), integer_type_node);
DECL_ARG_TYPE (decl) = TREE_TYPE (decl);
- DECL_SOURCE_LOCATION (decl) = DECL_SOURCE_LOCATION (fndecl);
+ copy_tree_locus (decl, fndecl);
pushdecl (decl);
if (flag_isoc99)
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index bb9cc1a..3582546 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -414,7 +414,7 @@ fndef:
YYERROR1;
}
old_style_parm_decls save_location
- { DECL_SOURCE_LOCATION (current_function_decl) = $6;
+ { set_tree_locus (current_function_decl, $6);
store_parm_decls (); }
compstmt_or_error
{ finish_function ();
@@ -427,7 +427,7 @@ fndef:
YYERROR1;
}
old_style_parm_decls save_location
- { DECL_SOURCE_LOCATION (current_function_decl) = $6;
+ { set_tree_locus (current_function_decl, $6);
store_parm_decls (); }
compstmt_or_error
{ finish_function ();
@@ -440,7 +440,7 @@ fndef:
YYERROR1;
}
old_style_parm_decls save_location
- { DECL_SOURCE_LOCATION (current_function_decl) = $5;
+ { set_tree_locus (current_function_decl, $5);
store_parm_decls (); }
compstmt_or_error
{ finish_function ();
@@ -1563,7 +1563,7 @@ nested_function:
}
old_style_parm_decls save_location
{ tree decl = current_function_decl;
- DECL_SOURCE_LOCATION (decl) = $4;
+ set_tree_locus (decl, $4);
store_parm_decls (); }
/* This used to use compstmt_or_error.
That caused a bug with input `f(g) int g {}',
@@ -1594,7 +1594,7 @@ notype_nested_function:
}
old_style_parm_decls save_location
{ tree decl = current_function_decl;
- DECL_SOURCE_LOCATION (decl) = $4;
+ set_tree_locus (decl, $4);
store_parm_decls (); }
/* This used to use compstmt_or_error.
That caused a bug with input `f(g) int g {}',
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 72d01af..4b32ca0 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -7349,13 +7349,11 @@ alpha_start_function (FILE *file, const char *fnname,
if (write_symbols == SDB_DEBUG)
{
#ifdef ASM_OUTPUT_SOURCE_FILENAME
- ASM_OUTPUT_SOURCE_FILENAME (file,
- DECL_SOURCE_FILE (current_function_decl));
+ ASM_OUTPUT_SOURCE_FILENAME (file, TREE_FILENAME (current_function_decl));
#endif
#ifdef ASM_OUTPUT_SOURCE_LINE
if (debug_info_level != DINFO_LEVEL_TERSE)
- ASM_OUTPUT_SOURCE_LINE (file,
- DECL_SOURCE_LINE (current_function_decl), 0);
+ ASM_OUTPUT_SOURCE_LINE (file, TREE_LINENO (current_function_decl), 0);
#endif
}
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 8bd2139..307027e 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -6507,11 +6507,11 @@ mips_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
need the source filename more than once in the file, beyond what is
emitted by the debug information. */
if (!TARGET_GAS)
- ASM_OUTPUT_SOURCE_FILENAME (file, DECL_SOURCE_FILE (current_function_decl));
+ ASM_OUTPUT_SOURCE_FILENAME (file, TREE_FILENAME (current_function_decl));
#ifdef SDB_DEBUGGING_INFO
if (debug_info_level != DINFO_LEVEL_TERSE && write_symbols == SDB_DEBUG)
- ASM_OUTPUT_SOURCE_LINE (file, DECL_SOURCE_LINE (current_function_decl), 0);
+ ASM_OUTPUT_SOURCE_LINE (file, TREE_LINENO (current_function_decl), 0);
#endif
/* In mips16 mode, we may need to generate a 32 bit to handle
diff --git a/gcc/coverage.c b/gcc/coverage.c
index e6f4129..dc10206 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -410,9 +410,9 @@ checksum_string (unsigned chksum, const char *string)
static unsigned
compute_checksum (void)
{
- unsigned chksum = DECL_SOURCE_LINE (current_function_decl);
+ unsigned chksum = TREE_LINENO (current_function_decl);
- chksum = checksum_string (chksum, DECL_SOURCE_FILE (current_function_decl));
+ chksum = checksum_string (chksum, TREE_FILENAME (current_function_decl));
chksum = checksum_string
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl)));
@@ -432,8 +432,8 @@ coverage_begin_output (void)
if (!bbg_function_announced)
{
- const char *file = DECL_SOURCE_FILE (current_function_decl);
- unsigned line = DECL_SOURCE_LINE (current_function_decl);
+ const char *file = TREE_FILENAME (current_function_decl);
+ unsigned line = TREE_LINENO (current_function_decl);
unsigned long offset;
if (!bbg_file_opened)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2734bf6..19c3c48 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
+ method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
+ DECL_SOURCE_LOCATION rename and change to const.
+
2003-09-20 Richard Henderson <rth@redhat.com>
* decl.c, decl2.c, pt.c: Use %J in diagnostics.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 17ff0e4..ebcad80 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -5212,7 +5212,7 @@ finish_struct (tree t, tree attributes)
/* Nadger the current location so that diagnostics point to the start of
the struct, not the end. */
- input_location = DECL_SOURCE_LOCATION (TYPE_NAME (t));
+ input_location = TREE_LOCUS (TYPE_NAME (t));
if (processing_template_decl)
{
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index ef38d55..8f931aa 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -390,7 +390,7 @@ typedef enum cp_id_kind
/* The IDENTIFIER_VALUE is the value of the IDENTIFIER_BINDING, or
NULL_TREE if there is no binding. */
#define IDENTIFIER_VALUE(NODE) \
- (IDENTIFIER_BINDING (NODE) ? IDENTIFIER_BINDING (NODE)->value : NULL)
+ (IDENTIFIER_BINDING (NODE) ? IDENTIFIER_BINDING (NODE)->value : NULL_TREE)
/* If IDENTIFIER_CLASS_VALUE is set, then NODE is bound in the current
class, and IDENTIFIER_CLASS_VALUE is the value binding. This is
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 892affa..376d8de 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -1787,7 +1787,7 @@ print_binding_level (struct cp_binding_level* lvl)
continue;
if (no_print_builtins
&& (TREE_CODE (t) == TYPE_DECL)
- && (!strcmp (DECL_SOURCE_FILE (t),"<built-in>")))
+ && (!strcmp (TREE_FILENAME (t), "<built-in>")))
continue;
/* Function decls tend to have longer names. */
@@ -3153,9 +3153,8 @@ duplicate_decls (tree newdecl, tree olddecl)
if (DECL_INITIAL (DECL_TEMPLATE_RESULT (olddecl)) == NULL_TREE
&& DECL_INITIAL (DECL_TEMPLATE_RESULT (newdecl)) != NULL_TREE)
{
- DECL_SOURCE_LOCATION (olddecl)
- = DECL_SOURCE_LOCATION (DECL_TEMPLATE_RESULT (olddecl))
- = DECL_SOURCE_LOCATION (newdecl);
+ copy_tree_locus (olddecl, newdecl);
+ copy_tree_locus (DECL_TEMPLATE_RESULT (olddecl), newdecl);
}
return 1;
@@ -3195,13 +3194,13 @@ duplicate_decls (tree newdecl, tree olddecl)
TYPE_RAISES_EXCEPTIONS (oldtype));
if ((pedantic || ! DECL_IN_SYSTEM_HEADER (olddecl))
- && DECL_SOURCE_LINE (olddecl) != 0
+ && TREE_LOCUS_SET_P (olddecl)
&& flag_exceptions
&& !comp_except_specs (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (newdecl)),
TYPE_RAISES_EXCEPTIONS (TREE_TYPE (olddecl)), 1))
{
error ("declaration of `%F' throws different exceptions",
- newdecl);
+ newdecl);
cp_error_at ("than previous declaration `%F'", olddecl);
}
}
@@ -3232,7 +3231,7 @@ duplicate_decls (tree newdecl, tree olddecl)
&& DECL_INITIAL (olddecl) != NULL_TREE)
{
DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
- DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
+ copy_tree_locus (newdecl, olddecl);
if (CAN_HAVE_FULL_LANG_DECL_P (newdecl)
&& DECL_LANG_SPECIFIC (newdecl)
&& DECL_LANG_SPECIFIC (olddecl))
@@ -3701,7 +3700,7 @@ pushdecl (tree x)
if (TREE_CODE (x) == TYPE_DECL)
{
tree type = TREE_TYPE (x);
- if (DECL_SOURCE_LINE (x) == 0)
+ if (!TREE_LOCUS_SET_P (x))
{
if (TYPE_NAME (type) == 0)
TYPE_NAME (type) = x;
@@ -4075,7 +4074,7 @@ pushdecl_class_level (tree x)
for (f = TYPE_FIELDS (TREE_TYPE (x)); f; f = TREE_CHAIN (f))
{
location_t save_location = input_location;
- input_location = DECL_SOURCE_LOCATION (f);
+ input_location = TREE_LOCUS (f);
if (!pushdecl_class_level (f))
is_valid = false;
input_location = save_location;
@@ -4520,7 +4519,7 @@ make_label_decl (tree id, int local_p)
/* Say where one reference is to the label, for the sake of the
error if it is not defined. */
- DECL_SOURCE_LOCATION (decl) = input_location;
+ set_tree_locus (decl, input_location);
/* Record the fact that this identifier is bound to this label. */
SET_IDENTIFIER_LABEL_VALUE (id, decl);
@@ -4831,7 +4830,7 @@ define_label (location_t location, tree name)
/* Mark label as having been defined. */
DECL_INITIAL (decl) = error_mark_node;
/* Say where in the source. */
- DECL_SOURCE_LOCATION (decl) = location;
+ set_tree_locus (decl, location);
if (ent)
{
ent->names_in_scope = current_binding_level->names;
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index b1ee970..084cc9b 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -2240,7 +2240,7 @@ start_static_initialization_or_destruction (tree decl, int initp)
where DECL was declared so that error-messages make sense, and so
that the debugger will show somewhat sensible file and line
information. */
- input_location = DECL_SOURCE_LOCATION (decl);
+ input_location = TREE_LOCUS (decl);
/* Because of:
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index a10dcf6..74d1218 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1959,7 +1959,7 @@ location_of (tree t)
else if (TREE_CODE (t) == OVERLOAD)
t = OVL_FUNCTION (t);
- return DECL_SOURCE_LOCATION (t);
+ return TREE_LOCUS (t);
}
/* Now the interfaces from error et al to dump_type et al. Each takes an
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index ace82cd..4427754 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2414,9 +2414,9 @@ create_temporary_var (tree type)
decl = build_decl (VAR_DECL, NULL_TREE, type);
TREE_USED (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
- DECL_SOURCE_LOCATION (decl) = input_location;
DECL_IGNORED_P (decl) = 1;
DECL_CONTEXT (decl) = current_function_decl;
+ set_tree_locus (decl, input_location);
return decl;
}
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 5277004..b5d5e32 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -719,7 +719,7 @@ synthesize_method (tree fndecl)
where the attempt to generate the function occurs, giving the
user a hint as to why we are attempting to generate the
function. */
- DECL_SOURCE_LOCATION (fndecl) = input_location;
+ set_tree_locus (fndecl, input_location);
interface_unknown = 1;
start_function (NULL_TREE, fndecl, NULL_TREE, SF_DEFAULT | SF_PRE_PARSED);
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 2b7df6c..a817084 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -109,7 +109,7 @@ update_cloned_parm (tree parm, tree cloned_parm)
/* The name may have changed from the declaration. */
DECL_NAME (cloned_parm) = DECL_NAME (parm);
- DECL_SOURCE_LOCATION (cloned_parm) = DECL_SOURCE_LOCATION (parm);
+ copy_tree_locus (cloned_parm, parm);
}
/* FN is a function that has a complete body. Clone the body as
@@ -146,7 +146,7 @@ maybe_clone_body (tree fn)
splay_tree decl_map;
/* Update CLONE's source position information to match FN's. */
- DECL_SOURCE_LOCATION (clone) = DECL_SOURCE_LOCATION (fn);
+ copy_tree_locus (clone, fn);
DECL_INLINE (clone) = DECL_INLINE (fn);
DECL_DECLARED_INLINE_P (clone) = DECL_DECLARED_INLINE_P (fn);
DECL_COMDAT (clone) = DECL_COMDAT (fn);
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 12baea1..c1d49e7 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -966,10 +966,9 @@ register_specialization (tree spec, tree tmpl, tree args)
else if (DECL_TEMPLATE_SPECIALIZATION (fn))
{
if (!duplicate_decls (spec, fn) && DECL_INITIAL (spec))
- /* Dup decl failed, but this is a new
- definition. Set the line number so any errors
- match this new definition. */
- DECL_SOURCE_LOCATION (fn) = DECL_SOURCE_LOCATION (spec);
+ /* Dup decl failed, but this is a new definition. Set the
+ line number so any errors match this new definition. */
+ copy_tree_locus (fn, spec);
return fn;
}
@@ -1783,9 +1782,8 @@ check_explicit_specialization (tree declarator,
DECL_INITIAL (DECL_TEMPLATE_RESULT (tmpl)) = NULL_TREE;
if (have_def)
{
- DECL_SOURCE_LOCATION (tmpl) = DECL_SOURCE_LOCATION (decl);
- DECL_SOURCE_LOCATION (DECL_TEMPLATE_RESULT (tmpl))
- = DECL_SOURCE_LOCATION (decl);
+ copy_tree_locus (tmpl, decl);
+ copy_tree_locus (DECL_TEMPLATE_RESULT (tmpl), decl);
}
return tmpl;
}
@@ -4255,8 +4253,7 @@ lookup_template_class (tree d1,
type_decl = create_implicit_typedef (DECL_NAME (template), t);
DECL_CONTEXT (type_decl) = TYPE_CONTEXT (t);
TYPE_STUB_DECL (t) = type_decl;
- DECL_SOURCE_LOCATION (type_decl)
- = DECL_SOURCE_LOCATION (TYPE_STUB_DECL (template_type));
+ copy_tree_locus (type_decl, TYPE_STUB_DECL (template_type));
}
else
type_decl = TYPE_NAME (t);
@@ -4712,7 +4709,7 @@ tsubst_friend_function (tree decl, tree args)
tree new_friend;
location_t saved_loc = input_location;
- input_location = DECL_SOURCE_LOCATION (decl);
+ input_location = TREE_LOCUS (decl);
if (TREE_CODE (decl) == FUNCTION_DECL
&& DECL_TEMPLATE_INSTANTIATION (decl)
@@ -5153,7 +5150,7 @@ instantiate_class_template (tree type)
/* Set the input location to the template definition. This is needed
if tsubsting causes an error. */
- input_location = DECL_SOURCE_LOCATION (TYPE_NAME (pattern));
+ input_location = TREE_LOCUS (TYPE_NAME (pattern));
TYPE_HAS_CONSTRUCTOR (type) = TYPE_HAS_CONSTRUCTOR (pattern);
TYPE_HAS_DESTRUCTOR (type) = TYPE_HAS_DESTRUCTOR (pattern);
@@ -5302,7 +5299,7 @@ instantiate_class_template (tree type)
assist in error message reporting. Since we
called push_tinst_level above, we don't need to
restore these. */
- input_location = DECL_SOURCE_LOCATION (t);
+ input_location = TREE_LOCUS (t);
if (TREE_CODE (t) == TEMPLATE_DECL)
processing_template_decl++;
@@ -5411,7 +5408,7 @@ instantiate_class_template (tree type)
implicit functions at a predictable point, and the same point
that would be used for non-template classes. */
typedecl = TYPE_MAIN_DECL (type);
- input_location = DECL_SOURCE_LOCATION (typedecl);
+ input_location = TREE_LOCUS (typedecl);
unreverse_member_declarations (type);
finish_struct_1 (type);
@@ -5708,7 +5705,7 @@ tsubst_decl (tree t, tree args, tree type, tsubst_flags_t complain)
/* Set the filename and linenumber to improve error-reporting. */
saved_loc = input_location;
- input_location = DECL_SOURCE_LOCATION (t);
+ input_location = TREE_LOCUS (t);
switch (TREE_CODE (t))
{
@@ -10774,7 +10771,7 @@ instantiate_decl (tree d, int defer_ok)
else
pattern_defined = ! DECL_IN_AGGR_P (code_pattern);
- input_location = DECL_SOURCE_LOCATION (d);
+ input_location = TREE_LOCUS (d);
if (pattern_defined)
{
@@ -10890,7 +10887,7 @@ instantiate_decl (tree d, int defer_ok)
/* We already set the file and line above. Reset them now in case
they changed as a result of calling
regenerate_decl_from_template. */
- input_location = DECL_SOURCE_LOCATION (d);
+ input_location = TREE_LOCUS (d);
if (TREE_CODE (d) == VAR_DECL)
{
@@ -11178,8 +11175,7 @@ tsubst_enum (tree tag, tree newtag, tree args)
}
finish_enum (newtag);
- DECL_SOURCE_LOCATION (TYPE_NAME (newtag))
- = DECL_SOURCE_LOCATION (TYPE_NAME (tag));
+ copy_tree_locus (TYPE_NAME (newtag), TYPE_NAME (tag));
}
/* DECL is a FUNCTION_DECL that is a template specialization. Return
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index ef42579..ca04ddf 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2030,7 +2030,7 @@ begin_class_definition (tree t)
}
/* Update the location of the decl. */
- DECL_SOURCE_LOCATION (TYPE_NAME (t)) = input_location;
+ set_tree_locus (TYPE_NAME (t), input_location);
if (TYPE_BEING_DEFINED (t))
{
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 0c729d6..6dce605 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -2153,7 +2153,7 @@ cp_copy_res_decl_for_inlining (tree result,
&& DECL_NAME (var) == NULL_TREE)
{
DECL_NAME (var) = DECL_NAME (nrv);
- DECL_SOURCE_LOCATION (var) = DECL_SOURCE_LOCATION (nrv);
+ copy_tree_locus (var, nrv);
DECL_ABSTRACT_ORIGIN (var) = DECL_ORIGIN (nrv);
/* Don't lose initialization info. */
DECL_INITIAL (var) = DECL_INITIAL (nrv);
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index e4c7978..3f457b5 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -2689,7 +2689,7 @@ static void
dbxout_prepare_symbol (tree decl ATTRIBUTE_UNUSED)
{
#ifdef WINNING_GDB
- const char *filename = DECL_SOURCE_FILE (decl);
+ const char *filename = TREE_FILENAME (decl);
dbxout_source_file (asmfile, filename);
#endif
@@ -2703,7 +2703,7 @@ dbxout_finish_symbol (tree sym)
#else
int line = 0;
if (use_gnu_debug_info_extensions && sym != 0)
- line = DECL_SOURCE_LINE (sym);
+ line = TREE_LINENO (sym);
fprintf (asmfile, "\",%d,0,%d,", current_sym_code, line);
if (current_sym_addr)
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index c29867a..9537339 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -139,7 +139,7 @@ text_specifies_location (text_info *text, location_t *locus)
else if (p[0] == '%' && p[1] == 'J')
{
tree t = va_arg (*text->args_ptr, tree);
- *locus = DECL_SOURCE_LOCATION (t);
+ *locus = TREE_LOCUS (t);
text->format_spec = p + 2;
return true;
}
diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi
index 29ccaec..7f125ee 100644
--- a/gcc/doc/c-tree.texi
+++ b/gcc/doc/c-tree.texi
@@ -856,13 +856,13 @@ entity.
@item TREE_TYPE
This macro returns the type of the entity declared.
-@item DECL_SOURCE_FILE
+@item TREE_FILENAME
This macro returns the name of the file in which the entity was
declared, as a @code{char*}. For an entity declared implicitly by the
compiler (like @code{__builtin_memcpy}), this will be the string
@code{"<internal>"}.
-@item DECL_SOURCE_LINE
+@item TREE_LINENO
This macro returns the line number at which the entity was declared, as
an @code{int}.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 5fa730e..dc28f11 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -9907,10 +9907,10 @@ add_pure_or_virtual_attribute (dw_die_ref die, tree func_decl)
static void
add_src_coords_attributes (dw_die_ref die, tree decl)
{
- unsigned file_index = lookup_filename (DECL_SOURCE_FILE (decl));
+ unsigned file_index = lookup_filename (TREE_FILENAME (decl));
add_AT_unsigned (die, DW_AT_decl_file, file_index);
- add_AT_unsigned (die, DW_AT_decl_line, DECL_SOURCE_LINE (decl));
+ add_AT_unsigned (die, DW_AT_decl_line, TREE_LINENO (decl));
}
/* Add a DW_AT_name attribute and source coordinate attribute for the
@@ -10596,7 +10596,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
}
else if (old_die)
{
- unsigned file_index = lookup_filename (DECL_SOURCE_FILE (decl));
+ unsigned file_index = lookup_filename (TREE_FILENAME (decl));
if (!get_AT_flag (old_die, DW_AT_declaration)
/* We can have a normal definition following an inline one in the
@@ -10625,7 +10625,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
&& (DECL_ARTIFICIAL (decl)
|| (get_AT_unsigned (old_die, DW_AT_decl_file) == file_index
&& (get_AT_unsigned (old_die, DW_AT_decl_line)
- == (unsigned) DECL_SOURCE_LINE (decl)))))
+ == (unsigned) TREE_LINENO (decl)))))
{
subr_die = old_die;
@@ -10640,9 +10640,9 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
if (get_AT_unsigned (old_die, DW_AT_decl_file) != file_index)
add_AT_unsigned (subr_die, DW_AT_decl_file, file_index);
if (get_AT_unsigned (old_die, DW_AT_decl_line)
- != (unsigned) DECL_SOURCE_LINE (decl))
+ != (unsigned) TREE_LINENO (decl))
add_AT_unsigned
- (subr_die, DW_AT_decl_line, DECL_SOURCE_LINE (decl));
+ (subr_die, DW_AT_decl_line, TREE_LINENO (decl));
}
}
else
@@ -10859,16 +10859,16 @@ gen_variable_die (tree decl, dw_die_ref context_die)
add_AT_die_ref (var_die, DW_AT_specification, old_die);
if (DECL_NAME (decl))
{
- unsigned file_index = lookup_filename (DECL_SOURCE_FILE (decl));
+ unsigned file_index = lookup_filename (TREE_FILENAME (decl));
if (get_AT_unsigned (old_die, DW_AT_decl_file) != file_index)
add_AT_unsigned (var_die, DW_AT_decl_file, file_index);
if (get_AT_unsigned (old_die, DW_AT_decl_line)
- != (unsigned) DECL_SOURCE_LINE (decl))
+ != (unsigned) TREE_LINENO (decl))
add_AT_unsigned (var_die, DW_AT_decl_line,
- DECL_SOURCE_LINE (decl));
+ TREE_LINENO (decl));
}
}
else
@@ -12036,7 +12036,7 @@ dwarf2out_decl (tree decl)
/* Don't bother trying to generate any DIEs to represent any of the
normal built-in types for the language we are compiling. */
- if (DECL_SOURCE_LINE (decl) == 0)
+ if (!TREE_LOCUS_SET_P (decl))
{
/* OK, we need to generate one for `bool' so GDB knows what type
comparisons have. */
diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c
index dfd1f0b..0ad9d0f 100644
--- a/gcc/dwarfout.c
+++ b/gcc/dwarfout.c
@@ -3411,10 +3411,10 @@ name_and_src_coords_attributes (tree decl)
Fred Fish sez that m68k/svr4 assemblers botch those. */
ASM_OUTPUT_POP_SECTION (asm_out_file);
- file_index = lookup_filename (DECL_SOURCE_FILE (decl));
+ file_index = lookup_filename (TREE_FILENAME (decl));
ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
- src_coords_attribute (file_index, DECL_SOURCE_LINE (decl));
+ src_coords_attribute (file_index, TREE_LINENO (decl));
}
#endif /* defined(DWARF_DECL_COORDINATES) */
}
@@ -5618,7 +5618,7 @@ dwarfout_file_scope_decl (tree decl, int set_finalizing)
/* ??? This code is different than the equivalent code in dwarf2out.c.
The dwarf2out.c code is probably more correct. */
- if (DECL_SOURCE_LINE (decl) == 0
+ if (!TREE_LOCUS_SET_P (decl)
&& (type_is_fundamental (TREE_TYPE (decl))
|| TREE_CODE (TREE_TYPE (decl)) == LANG_TYPE))
return;
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index e985070..5d588e9 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * com.c, ste.c: Update for DECL_SOURCE_LOCATION rename and
+ change to const.
+
2003-09-21 Toon Moene <toon@moene.indiv.nluug.nl>
* news.texi: Update with fixed PR's.
diff --git a/gcc/f/com.c b/gcc/f/com.c
index a5100d9..9658a54 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -13227,7 +13227,7 @@ duplicate_decls (tree newdecl, tree olddecl)
return 0;
}
else if (TREE_CODE (olddecl) == FUNCTION_DECL
- && DECL_SOURCE_LINE (olddecl) == 0)
+ && !TREE_LOCUS_SET_P (olddecl))
{
/* A function declaration for a predeclared function
that isn't actually built in. */
@@ -13297,8 +13297,7 @@ duplicate_decls (tree newdecl, tree olddecl)
if ((DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0)
|| (DECL_CONTEXT (newdecl) != 0 && DECL_CONTEXT (olddecl) == 0))
{
- DECL_SOURCE_LINE (newdecl) = DECL_SOURCE_LINE (olddecl);
- DECL_SOURCE_FILE (newdecl) = DECL_SOURCE_FILE (olddecl);
+ copy_tree_locus (newdecl, olddecl);
if (DECL_CONTEXT (olddecl) == 0
&& TREE_CODE (newdecl) != FUNCTION_DECL)
@@ -14535,7 +14534,7 @@ pushdecl (tree x)
if (TREE_CODE (x) == TYPE_DECL)
{
- if (DECL_SOURCE_LINE (x) == 0)
+ if (!TREE_LOCUS_SET_P (x))
{
if (TYPE_NAME (TREE_TYPE (x)) == 0)
TYPE_NAME (TREE_TYPE (x)) = x;
diff --git a/gcc/f/ste.c b/gcc/f/ste.c
index 82435bc..dc0d27e 100644
--- a/gcc/f/ste.c
+++ b/gcc/f/ste.c
@@ -2392,8 +2392,8 @@ ffeste_labeldef_branch (ffelab label)
assert (DECL_INITIAL (glabel) == NULL_TREE);
DECL_INITIAL (glabel) = error_mark_node;
- DECL_SOURCE_FILE (glabel) = ffelab_definition_filename (label);
- DECL_SOURCE_LINE (glabel) = ffelab_definition_filelinenum (label);
+ set_tree_file_line (glabel, ffelab_definition_filename (label),
+ ffelab_definition_filelinenum (label));
emit_nop ();
diff --git a/gcc/function.c b/gcc/function.c
index baec4ab..1af4d38 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -6399,8 +6399,8 @@ init_function_start (tree subr)
function. Also tell final how to output a linenum before the
function prologue. Note linenums could be missing, e.g. when
compiling a Java .class file. */
- if (DECL_SOURCE_LINE (subr))
- emit_line_note (DECL_SOURCE_LOCATION (subr));
+ if (TREE_LOCUS_SET_P (subr))
+ emit_line_note (TREE_LOCUS (subr));
/* Make sure first insn is a note even if we don't want linenums.
This makes sure the first insn will never be deleted.
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 21a738e..2c6ff17 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -987,7 +987,7 @@ expand_inline_function (tree fndecl, tree parms, rtx target, int ignore,
&& ! (GET_CODE (XEXP (loc, 0)) == REG
&& REGNO (XEXP (loc, 0)) > LAST_VIRTUAL_REGISTER))
{
- rtx note = emit_line_note (DECL_SOURCE_LOCATION (formal));
+ rtx note = emit_line_note (TREE_LOCUS (formal));
if (note)
RTX_INTEGRATED_P (note) = 1;
@@ -2985,7 +2985,7 @@ output_inline_function (tree fndecl)
/* Make sure warnings emitted by the optimizers (e.g. control reaches
end of non-void function) is not wildly incorrect. */
- input_location = DECL_SOURCE_LOCATION (fndecl);
+ input_location = TREE_LOCUS (fndecl);
/* Compile this function all the way down to assembly code. As a
side effect this destroys the saved RTL representation, but
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index a14c1db..be46849 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
+ resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
+
2003-09-20 Richard Henderson <rth@redhat.com>
* check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
diff --git a/gcc/java/class.c b/gcc/java/class.c
index e3e6cc3..289dbfa 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -1728,8 +1728,8 @@ maybe_layout_super_class (tree super_class, tree this_class)
{
tree this_decl = TYPE_NAME (this_class);
this_wrap = build_expr_wfl (this_class,
- DECL_SOURCE_FILE (this_decl),
- DECL_SOURCE_LINE (this_decl), 0);
+ TREE_FILENAME (this_decl),
+ TREE_LINENO (this_decl), 0);
}
super_class = do_resolve_class (NULL_TREE, /* FIXME? */
super_class, NULL_TREE, this_wrap);
@@ -1767,8 +1767,8 @@ layout_class (tree this_class)
tree decl = TYPE_NAME (TREE_PURPOSE (current));
sprintf (buffer, "\n which inherits from `%s' (%s:%d)",
IDENTIFIER_POINTER (DECL_NAME (decl)),
- DECL_SOURCE_FILE (decl),
- DECL_SOURCE_LINE (decl));
+ TREE_FILENAME (decl),
+ TREE_LINENO (decl));
obstack_grow (&temporary_obstack, buffer, strlen (buffer));
}
obstack_1grow (&temporary_obstack, '\0');
@@ -2059,7 +2059,6 @@ emit_register_classes (void)
init_decl = build_decl (FUNCTION_DECL, init_name, init_type);
SET_DECL_ASSEMBLER_NAME (init_decl, init_name);
- DECL_SOURCE_LINE (init_decl) = 0;
TREE_STATIC (init_decl) = 1;
current_function_decl = init_decl;
DECL_RESULT (init_decl) = build_decl (RESULT_DECL, NULL_TREE,
@@ -2084,7 +2083,7 @@ emit_register_classes (void)
for ( t = registered_class; t; t = TREE_CHAIN (t))
emit_library_call (registerClass_libfunc, 0, VOIDmode, 1,
XEXP (DECL_RTL (t), 0), Pmode);
- input_location = DECL_SOURCE_LOCATION (init_decl);
+ input_location = TREE_LOCUS (init_decl);
expand_function_end ();
poplevel (1, 0, 1);
rest_of_compilation (init_decl);
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 7ddf704..d92bbdc 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -1070,7 +1070,7 @@ pushdecl (tree x)
/* Maybe warn if shadowing something else. */
else if (warn_shadow && !DECL_EXTERNAL (x)
/* No shadow warnings for internally generated vars. */
- && DECL_SOURCE_LINE (x) != 0
+ && TREE_LOCUS_SET_P (x)
/* No shadow warnings for vars made for inlining. */
&& ! DECL_FROM_INLINE (x))
{
@@ -1817,8 +1817,7 @@ java_expand_body (tree fndecl)
int saved_lineno = input_line;
current_function_decl = fndecl;
- input_filename = DECL_SOURCE_FILE (fndecl);
- input_line = DECL_SOURCE_LINE (fndecl);
+ input_location = TREE_LOCUS (fndecl);
timevar_push (TV_EXPAND);
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index f47dbe0..eea2a15 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -145,8 +145,10 @@ set_source_filename (JCF *jcf, int index)
return;
}
input_filename = sfname;
- DECL_SOURCE_FILE (TYPE_NAME (current_class)) = sfname;
- if (current_class == main_class) main_input_filename = input_filename;
+ set_tree_file_line (TYPE_NAME (current_class), sfname,
+ TREE_LINENO (TYPE_NAME (current_class)));
+ if (current_class == main_class)
+ main_input_filename = input_filename;
}
#define HANDLE_SOURCEFILE(INDEX) set_source_filename (jcf, INDEX)
@@ -418,7 +420,7 @@ give_name_to_class (JCF *jcf, int i)
tree class_name = unmangle_classname (JPOOL_UTF_DATA (jcf, j),
JPOOL_UTF_LENGTH (jcf, j));
this_class = lookup_class (class_name);
- input_filename = DECL_SOURCE_FILE (TYPE_NAME (this_class));
+ input_filename = TREE_FILENAME (TYPE_NAME (this_class));
input_line = 0;
if (main_input_filename == NULL && jcf == main_jcf)
main_input_filename = input_filename;
@@ -708,7 +710,7 @@ parse_class_file (void)
java_layout_seen_class_methods ();
- input_filename = DECL_SOURCE_FILE (TYPE_NAME (current_class));
+ input_filename = TREE_FILENAME (TYPE_NAME (current_class));
input_line = 0;
(*debug_hooks->start_source_file) (input_line, input_filename);
init_outgoing_cpool ();
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 82c77b1..bc76c88 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -3113,7 +3113,7 @@ generate_classfile (tree clas, struct jcf_partial *state)
}
ptr = methods_count_ptr; UNSAFE_PUT2 (methods_count);
- source_file = DECL_SOURCE_FILE (TYPE_NAME (clas));
+ source_file = TREE_FILENAME (TYPE_NAME (clas));
for (s = source_file; ; s++)
{
char ch = *s;
@@ -3299,7 +3299,7 @@ make_class_file_name (tree clas)
/* Make sure we put the class file into the .java file's
directory, and not into some subdirectory thereof. */
char *t;
- dname = DECL_SOURCE_FILE (TYPE_NAME (clas));
+ dname = TREE_FILENAME (TYPE_NAME (clas));
slash = strrchr (dname, DIR_SEPARATOR);
#ifdef DIR_SEPARATOR_2
if (! slash)
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a5064e1..de0a7d4 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -3208,7 +3208,7 @@ classitf_redefinition_error (const char *context, tree id, tree decl, tree cl)
{
parse_error_context (cl, "%s `%s' already defined in %s:%d",
context, IDENTIFIER_POINTER (id),
- DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ TREE_FILENAME (decl), TREE_LINENO (decl));
/* Here we should point out where its redefined. It's a unicode. FIXME */
}
@@ -3716,12 +3716,10 @@ maybe_create_class_interface_decl (tree decl, tree raw_name,
decl = push_class (make_class (), qualified_name);
/* Take care of the file and line business */
- DECL_SOURCE_FILE (decl) = EXPR_WFL_FILENAME (cl);
- /* If we're emiting xrefs, store the line/col number information */
- if (flag_emit_xref)
- DECL_SOURCE_LINE (decl) = EXPR_WFL_LINECOL (cl);
- else
- DECL_SOURCE_LINE (decl) = EXPR_WFL_LINENO (cl);
+ set_tree_file_line (decl, EXPR_WFL_FILENAME (cl),
+ (flag_emit_xref
+ ? EXPR_WFL_LINECOL (cl) : EXPR_WFL_LINENO (cl)));
+
CLASS_FROM_SOURCE_P (TREE_TYPE (decl)) = 1;
CLASS_PARSED_P (TREE_TYPE (decl)) = 1;
CLASS_FROM_CURRENTLY_COMPILED_P (TREE_TYPE (decl)) =
@@ -4205,7 +4203,7 @@ duplicate_declaration_error_p (tree new_field_name, tree new_type, tree cl)
(cl , "Duplicate variable declaration: `%s %s' was `%s %s' (%s:%d)",
t1, IDENTIFIER_POINTER (new_field_name),
t2, IDENTIFIER_POINTER (DECL_NAME (decl)),
- DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ TREE_FILENAME (decl), TREE_LINENO (decl));
free (t1);
free (t2);
return 1;
@@ -4687,7 +4685,7 @@ method_header (int flags, tree type, tree mdecl, tree throws)
/* If doing xref, store column and line number information instead
of the line number only. */
if (flag_emit_xref)
- DECL_SOURCE_LINE (meth) = EXPR_WFL_LINECOL (id);
+ set_tree_file_line (meth, TREE_FILENAME (meth), EXPR_WFL_LINECOL (id));
return meth;
}
@@ -6705,8 +6703,8 @@ lookup_cl (tree decl)
cl_v = build_expr_wfl (NULL_TREE, NULL, 0, 0);
}
- EXPR_WFL_FILENAME_NODE (cl_v) = get_identifier (DECL_SOURCE_FILE (decl));
- EXPR_WFL_SET_LINECOL (cl_v, DECL_SOURCE_LINE (decl), -1);
+ EXPR_WFL_FILENAME_NODE (cl_v) = get_identifier (TREE_FILENAME (decl));
+ EXPR_WFL_SET_LINECOL (cl_v, TREE_LINENO (decl), -1);
line = java_get_line_col (EXPR_WFL_FILENAME (cl_v),
EXPR_WFL_LINENO (cl_v), EXPR_WFL_COLNO (cl_v));
@@ -7286,7 +7284,7 @@ declare_local_variables (int modifier, tree type, tree vlist)
if ((other = lookup_name_in_blocks (name)))
{
variable_redefinition_error (wfl, name, TREE_TYPE (other),
- DECL_SOURCE_LINE (other));
+ TREE_LINENO (other));
continue;
}
@@ -7306,7 +7304,8 @@ declare_local_variables (int modifier, tree type, tree vlist)
/* If doing xreferencing, replace the line number with the WFL
compound value */
if (flag_emit_xref)
- DECL_SOURCE_LINE (decl) = EXPR_WFL_LINECOL (wfl);
+ set_tree_file_line (decl, TREE_FILENAME (decl),
+ EXPR_WFL_LINECOL (wfl));
/* Don't try to use an INIT statement when an error was found */
if (init && java_error_count)
@@ -7414,7 +7413,7 @@ create_artificial_method (tree class, int flags, tree type,
static void
start_artificial_method_body (tree mdecl)
{
- DECL_SOURCE_LINE (mdecl) = 1;
+ set_tree_file_line (mdecl, TREE_FILENAME (mdecl), 1);
DECL_FUNCTION_LAST_LINE (mdecl) = 1;
source_start_java_method (mdecl);
enter_block ();
@@ -7980,7 +7979,7 @@ start_complete_expand_method (tree mdecl)
TREE_CHAIN (tem) = next;
}
pushdecl_force_head (DECL_ARGUMENTS (mdecl));
- input_line = DECL_SOURCE_LINE (mdecl);
+ input_location = TREE_LOCUS (mdecl);
build_result_decl (mdecl);
}
@@ -10145,7 +10144,7 @@ check_deprecation (tree wfl, tree decl)
to the record. */
decl = TYPE_NAME (TREE_TYPE (elt));
}
- file = DECL_SOURCE_FILE (decl);
+ file = TREE_FILENAME (decl);
/* Complain if the field is deprecated and the file it was defined
in isn't compiled at the same time the file which contains its
diff --git a/gcc/java/resource.c b/gcc/java/resource.c
index b71a670..25b8a81 100644
--- a/gcc/java/resource.c
+++ b/gcc/java/resource.c
@@ -114,7 +114,6 @@ write_resource_constructor (void)
init_type = build_function_type (void_type_node, end_params_node);
init_decl = build_decl (FUNCTION_DECL, init_name, init_type);
- DECL_SOURCE_LINE (init_decl) = 0;
SET_DECL_ASSEMBLER_NAME (init_decl, init_name);
TREE_STATIC (init_decl) = 1;
current_function_decl = init_decl;
@@ -140,7 +139,7 @@ write_resource_constructor (void)
Pmode);
}
- input_location = DECL_SOURCE_LOCATION (init_decl);
+ input_location = TREE_LOCUS (init_decl);
expand_function_end ();
poplevel (1, 0, 1);
{
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 0c07543..02678a4 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -1984,13 +1984,12 @@ build_selector_translation_table (void)
}
if (!found)
{
- /* Adjust line number for warning message. */
- int save_lineno = input_line;
+ location_t loc = input_location;
if (flag_next_runtime && TREE_PURPOSE (chain))
- input_line = DECL_SOURCE_LINE (TREE_PURPOSE (chain));
- warning ("creating selector for non existant method %s",
- IDENTIFIER_POINTER (TREE_VALUE (chain)));
- input_line = save_lineno;
+ loc = TREE_LOCUS (TREE_PURPOSE (chain));
+
+ warning ("%Hcreating selector for non existant method %s",
+ &loc, IDENTIFIER_POINTER (TREE_VALUE (chain)));
}
}
@@ -2857,7 +2856,6 @@ build_tmp_function_decl (void)
expr_decl = build1 (INDIRECT_REF, NULL_TREE, expr_decl);
tmp_decl = define_decl (expr_decl, decl_specs);
- DECL_SOURCE_LINE (tmp_decl) = 0;
return tmp_decl;
}
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 3d6c01e..4049500 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -368,7 +368,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
fprintf (file, " %s", GET_MODE_NAME (mode));
fprintf (file, " file %s line %d",
- DECL_SOURCE_FILE (node), DECL_SOURCE_LINE (node));
+ TREE_FILENAME (node), TREE_LINENO (node));
print_node (file, "size", DECL_SIZE (node), indent + 4);
print_node (file, "unit size", DECL_SIZE_UNIT (node), indent + 4);
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 9d5553f..40ad357 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -3981,7 +3981,7 @@ expand_decl_init (tree decl)
}
else if (DECL_INITIAL (decl) && TREE_CODE (DECL_INITIAL (decl)) != TREE_LIST)
{
- emit_line_note (DECL_SOURCE_LOCATION (decl));
+ emit_line_note (TREE_LOCUS (decl));
expand_assignment (decl, DECL_INITIAL (decl), 0);
emit_queue ();
}
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 03485bc..559e682 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1709,7 +1709,7 @@ warn_deprecated_use (tree node)
if (DECL_P (node))
warning ("`%s' is deprecated (declared at %s:%d)",
IDENTIFIER_POINTER (DECL_NAME (node)),
- DECL_SOURCE_FILE (node), DECL_SOURCE_LINE (node));
+ TREE_FILENAME (node), TREE_LINENO (node));
else if (TYPE_P (node))
{
const char *what = NULL;
@@ -1725,13 +1725,13 @@ warn_deprecated_use (tree node)
{
if (decl)
warning ("`%s' is deprecated (declared at %s:%d)", what,
- DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ TREE_FILENAME (decl), TREE_LINENO (decl));
else
warning ("`%s' is deprecated", what);
}
else if (decl)
warning ("type is deprecated (declared at %s:%d)",
- DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ TREE_FILENAME (decl), TREE_LINENO (decl));
else
warning ("type is deprecated");
}
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c
index c369633..296d19c 100644
--- a/gcc/tree-dump.c
+++ b/gcc/tree-dump.c
@@ -321,18 +321,18 @@ dequeue_and_dump (dump_info_p di)
queue_and_dump_type (di, t);
dump_child ("scpe", DECL_CONTEXT (t));
/* And a source position. */
- if (DECL_SOURCE_FILE (t))
+ if (TREE_FILENAME (t))
{
- const char *filename = strrchr (DECL_SOURCE_FILE (t), '/');
+ const char *filename = strrchr (TREE_FILENAME (t), '/');
if (!filename)
- filename = DECL_SOURCE_FILE (t);
+ filename = TREE_FILENAME (t);
else
/* Skip the slash. */
++filename;
dump_maybe_newline (di);
fprintf (di->stream, "srcp: %s:%-6d ", filename,
- DECL_SOURCE_LINE (t));
+ TREE_LINENO (t));
di->column += 6 + strlen (filename) + 8;
}
/* And any declaration can be compiler-generated. */
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index e4e24b2..13cb5bb 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1322,7 +1322,7 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
line numbers corresponding to the function we are calling. We
wrap the whole inlined body in an EXPR_WITH_FILE_AND_LINE as well
because individual statements don't record the filename. */
- push_srcloc (DECL_SOURCE_FILE (fn), DECL_SOURCE_LINE (fn));
+ push_srcloc (TREE_FILENAME (fn), TREE_LINENO (fn));
#ifndef INLINER_FOR_JAVA
/* Build a statement-expression containing code to initialize the
@@ -1522,7 +1522,7 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
#ifndef INLINER_FOR_JAVA
chain = TREE_CHAIN (*tp);
#endif /* INLINER_FOR_JAVA */
- *tp = build_expr_wfl (expr, DECL_SOURCE_FILE (fn), DECL_SOURCE_LINE (fn),
+ *tp = build_expr_wfl (expr, TREE_FILENAME (fn), TREE_LINENO (fn),
/*col=*/0);
EXPR_WFL_EMIT_LINE_NOTE (*tp) = 1;
#ifndef INLINER_FOR_JAVA
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index e6049cb..ab11f4d 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -105,7 +105,7 @@ tree_rest_of_compilation (tree fndecl, bool nested_p)
/* Initialize the RTL code for the function. */
current_function_decl = fndecl;
saved_loc = input_location;
- input_location = DECL_SOURCE_LOCATION (fndecl);
+ input_location = TREE_LOCUS (fndecl);
init_function_start (fndecl);
/* This function is being processed in whole-function mode. */
diff --git a/gcc/tree.c b/gcc/tree.c
index b82a6bf..ef720ae 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -287,7 +287,7 @@ make_node (enum tree_code code)
DECL_ALIGN (t) = 1;
DECL_USER_ALIGN (t) = 0;
DECL_IN_SYSTEM_HEADER (t) = in_system_header;
- DECL_SOURCE_LOCATION (t) = input_location;
+ set_tree_locus (t, input_location);
DECL_UID (t) = next_decl_uid++;
/* We have not yet computed the alias set for this declaration. */
diff --git a/gcc/tree.def b/gcc/tree.def
index 4b6d236..f603f24 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -327,7 +327,7 @@ DEFTREECODE (STRING_CST, "string_cst", 'c', 0)
built-in functions. Its value is an enum built_in_function
that says which built-in function it is.
- DECL_SOURCE_FILE holds a filename string and DECL_SOURCE_LINE
+ TREE_FILENAME holds a filename string and TREE_LINENO
holds a line number. In some cases these can be the location of
a reference, if no definition has been seen.
diff --git a/gcc/tree.h b/gcc/tree.h
index d742bc3..2d87944 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -802,6 +802,29 @@ struct tree_vec GTY(())
#define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I)
#define TREE_COMPLEXITY(NODE) (EXPR_CHECK (NODE)->exp.complexity)
+/* These macros access the location of a declaration. For 3.4, this is
+ only defined for DECLs, but for 3.5 it will be valid on EXPRs as well;
+ thus the name is not decl specific. The values accessed from the
+ uppercase macros are intentionally read-only. Use the setter functions
+ to write to this field. */
+
+#define TREE_LOCUS(NODE) \
+ (*(const location_t *)&DECL_CHECK (NODE)->decl.locus)
+#define TREE_FILENAME(NODE) (TREE_LOCUS (NODE).file)
+#define TREE_LINENO(NODE) (TREE_LOCUS (NODE).line)
+#define TREE_LOCUS_SET_P(NODE) (TREE_LINENO (NODE) != 0)
+
+#define set_tree_locus(NODE, LOC) \
+ ((void)(DECL_CHECK (NODE)->decl.locus = (LOC)))
+#define copy_tree_locus(DEST, SRC) \
+ ((void)(DECL_CHECK (DEST)->decl.locus = DECL_CHECK (SRC)->decl.locus))
+#define set_tree_file_line(NODE, FILE, LINE) \
+ do { \
+ location_t *l_ = &DECL_CHECK (NODE)->decl.locus; \
+ l_->file = (FILE); \
+ l_->line = (LINE); \
+ } while (0)
+
/* In a LABELED_BLOCK_EXPR node. */
#define LABELED_BLOCK_LABEL(NODE) \
TREE_OPERAND_CHECK_CODE (NODE, LABELED_BLOCK_EXPR, 0)
@@ -1309,13 +1332,6 @@ struct tree_type GTY(())
/* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which
if nonzero, indicates that the field occupies the type. */
#define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->decl.initial)
-/* These two fields describe where in the source code the declaration
- was. If the declaration appears in several places (as for a C
- function that is declared first and then defined later), this
- information should refer to the definition. */
-#define DECL_SOURCE_LOCATION(NODE) (DECL_CHECK (NODE)->decl.locus)
-#define DECL_SOURCE_FILE(NODE) (DECL_SOURCE_LOCATION (NODE).file)
-#define DECL_SOURCE_LINE(NODE) (DECL_SOURCE_LOCATION (NODE).line)
/* Holds the size of the datum, in bits, as a tree expression.
Need not be constant. */
#define DECL_SIZE(NODE) (DECL_CHECK (NODE)->decl.size)
diff --git a/gcc/treelang/ChangeLog b/gcc/treelang/ChangeLog
index 7b8a5a5..75b9b2f 100644
--- a/gcc/treelang/ChangeLog
+++ b/gcc/treelang/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-21 Richard Henderson <rth@redhat.com>
+
+ * treetree.c: Update for DECL_SOURCE_LOCATION rename and
+ change to const.
+
2003-07-28 Andreas Jaeger <aj@suse.de>
* treetree.c: Convert remaining K&R prototypes to ISO C90.
diff --git a/gcc/treelang/treetree.c b/gcc/treelang/treetree.c
index 7697e3c..da92110 100644
--- a/gcc/treelang/treetree.c
+++ b/gcc/treelang/treetree.c
@@ -313,8 +313,9 @@ tree_code_create_function_prototype (unsigned char* chars,
id = get_identifier ((const char*)chars);
fn_decl = build_decl (FUNCTION_DECL, id, fn_type);
- DECL_CONTEXT (fn_decl) = NULL_TREE; /* Nested functions not supported here. */
- DECL_SOURCE_LOCATION (fn_decl) = loc;
+ /* Nested functions not supported here. */
+ DECL_CONTEXT (fn_decl) = NULL_TREE;
+ set_tree_locus (fn_decl, loc);
TREE_USED (fn_decl) = 1;
@@ -387,14 +388,14 @@ tree_code_create_function_initial (tree prev_saved,
current_function_decl = fn_decl;
DECL_INITIAL (fn_decl) = error_mark_node;
- DECL_SOURCE_LOCATION (fn_decl) = loc;
+ set_tree_locus (fn_decl, loc);
/* Prepare creation of rtl for a new function. */
resultdecl = DECL_RESULT (fn_decl)
= build_decl (RESULT_DECL, NULL_TREE, TREE_TYPE (TREE_TYPE (fn_decl)));
DECL_CONTEXT (DECL_RESULT (fn_decl)) = fn_decl;
- DECL_SOURCE_LOCATION (resultdecl) = loc;
+ set_tree_locus (resultdecl, loc);
/* Work out the size. ??? is this needed. */
layout_decl (DECL_RESULT (fn_decl), 0);
@@ -414,7 +415,7 @@ tree_code_create_function_initial (tree prev_saved,
if (!fn_decl)
abort ();
DECL_CONTEXT (parm_decl) = fn_decl;
- DECL_SOURCE_LOCATION (parm_decl) = loc;
+ set_tree_locus (parm_decl, loc);
parm_list = chainon (parm_decl, parm_list);
}
@@ -582,7 +583,7 @@ tree_code_create_variable (unsigned int storage_class,
DECL_CONTEXT (var_decl) = current_function_decl;
- DECL_SOURCE_LOCATION (var_decl) = loc;
+ set_tree_locus (var_decl, loc);
/* Set the storage mode and whether only visible in the same file. */
switch (storage_class)
diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
index 7c03ca5..0999af9 100644
--- a/gcc/xcoffout.c
+++ b/gcc/xcoffout.c
@@ -411,7 +411,7 @@ xcoffout_declare_function (FILE *file, tree decl, const char *name)
/* Any pending .bi or .ei must occur before the .function pseudo op.
Otherwise debuggers will think that the function is in the previous
file and/or at the wrong line number. */
- xcoffout_source_file (file, DECL_SOURCE_FILE (decl), 0);
+ xcoffout_source_file (file, TREE_FILENAME (decl), 0);
dbxout_symbol (decl, 0);
/* .function NAME, TOP, MAPPING, TYPE, SIZE