(BLOCK_END_NOTE): Likewise.
(BLOCK_LIVE_RANGE_FLAG): Likewise.
(BLOCK_LIVE_RANGE_START): Likewise.
(BLOCK_LIVE_RANGE_END): Likewise.
(tree_block): Remove live_range_flag, live_range_var_flag, and
type_tags. Remove end_note, live_range_start, and live_range_end.
(remember_end_note): Remove prototype.
* tree.c (build_block): Don't set BLOCK_TYPE_TAGS.
* c-decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
remember_end_note.
* ggc-common.c (ggc_mark_tree_children): Don't mark
BLOCK_TYPE_TAGS or BLOCK_END_NOTE.
* integrate.c (adjust_copied_decl_tree): Remove.
* print-tree.c (print_node): Don't print BLOCK_TYPE_TAGS.
* stmt.c (last_block_end_note): Remove.
(init_stmt): Don't add a GC root for it.
(expand_fixup): Don't set it.
(remember_end_note): Remove.
(expand_end_bindings): Don't set last_block_end_note.
* ch-tree.h (remember_end_note): Remove prototype.
* decl.c (poplevel): Don't call remember_end_note.
* decl.c (poplevel): Don't set BLOCK_TYPE_TAGS. Don't call
remember_end_note.
* com.c (poplevel): Don't call remember_end_note.
* decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
remember_end_note.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30188
138bc75d-0d04-0410-961f-
82ee72b054a4
+Tue Oct 26 01:27:32 1999 Mark Mitchell <mark@codesourcery.com>
+
+ * tree.h (BLOCK_TYPE_TAGS): Remove.
+ (BLOCK_END_NOTE): Likewise.
+ (BLOCK_LIVE_RANGE_FLAG): Likewise.
+ (BLOCK_LIVE_RANGE_START): Likewise.
+ (BLOCK_LIVE_RANGE_END): Likewise.
+ (tree_block): Remove live_range_flag, live_range_var_flag, and
+ type_tags. Remove end_note, live_range_start, and live_range_end.
+ (remember_end_note): Remove prototype.
+ * tree.c (build_block): Don't set BLOCK_TYPE_TAGS.
+ * c-decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
+ remember_end_note.
+ * ggc-common.c (ggc_mark_tree_children): Don't mark
+ BLOCK_TYPE_TAGS or BLOCK_END_NOTE.
+ * integrate.c (adjust_copied_decl_tree): Remove.
+ * print-tree.c (print_node): Don't print BLOCK_TYPE_TAGS.
+ * stmt.c (last_block_end_note): Remove.
+ (init_stmt): Don't add a GC root for it.
+ (expand_fixup): Don't set it.
+ (remember_end_note): Remove.
+ (expand_end_bindings): Don't set last_block_end_note.
+
Tue Oct 26 00:41:54 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* reload1.c (reload_reg_free_for_value_p): Show
if (block != 0)
{
BLOCK_VARS (block) = decls;
- BLOCK_TYPE_TAGS (block) = tags;
BLOCK_SUBBLOCKS (block) = subblocks;
- remember_end_note (block);
}
/* In each subblock, record that this is its superior. */
+1999-10-26 Mark Mitchell <mark@codesourcery.com>
+
+ * ch-tree.h (remember_end_note): Remove prototype.
+ * decl.c (poplevel): Don't call remember_end_note.
+
Fri Sep 24 10:48:10 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* ch-tree.h (builtin_function): Don't declare.
/* in integrate.c */
extern void output_inline_function PROTO((tree));
-/* in stmt.c */
-extern void remember_end_note PROTO((tree));
-
/* in toplev.c */
extern void announce_function PROTO((tree));
extern int floor_log2_wide PROTO((unsigned HOST_WIDE_INT));
}
BLOCK_SUBBLOCKS (block) = subblocks;
- remember_end_note (block);
}
/* In each subblock, record that this is its superior. */
+1999-10-26 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS. Don't call
+ remember_end_note.
+
1999-10-24 Mark Mitchell <mark@codesourcery.com>
* decl.c (push_overloaded_decl_1): Use pushdecl.
{
if (decls || tags || subblocks)
{
- if (BLOCK_VARS (block) || BLOCK_TYPE_TAGS (block))
+ if (BLOCK_VARS (block))
warning ("internal compiler error: debugging info corrupted");
BLOCK_VARS (block) = decls;
- BLOCK_TYPE_TAGS (block) = tags;
/* We can have previous subblocks and new subblocks when
doing fixup_gotos with complex cleanups. We chain the new
BLOCK_SUBBLOCKS (block) = chainon (BLOCK_SUBBLOCKS (block),
subblocks);
}
- /* If we created the block earlier on, and we are just
- diddling it now, then it already should have a proper
- BLOCK_END_NOTE value associated with it. */
}
else
{
BLOCK_VARS (block) = decls;
- BLOCK_TYPE_TAGS (block) = tags;
BLOCK_SUBBLOCKS (block) = subblocks;
- /* Otherwise, for a new block, install a new BLOCK_END_NOTE
- value. */
- remember_end_note (block);
}
}
+Tue Oct 26 01:32:19 1999 Mark Mitchell <mark@codesourcery.com>
+
+ * com.c (poplevel): Don't call remember_end_note.
+
Fri Oct 15 15:18:12 1999 Greg McGary <gkm@gnu.org>
* top.h (ffe_is_subscript_check_): Remove extern decl.
{
BLOCK_VARS (block) = decls;
BLOCK_SUBBLOCKS (block) = subblocks;
- remember_end_note (block);
}
/* In each subblock, record that this is its superior. */
case 'b': /* A lexical block. */
ggc_mark_tree (BLOCK_VARS (t));
- ggc_mark_tree (BLOCK_TYPE_TAGS (t));
ggc_mark_tree (BLOCK_SUBBLOCKS (t));
ggc_mark_tree (BLOCK_SUPERCONTEXT (t));
ggc_mark_tree (BLOCK_ABSTRACT_ORIGIN (t));
- ggc_mark_rtx (BLOCK_END_NOTE (t));
break;
case 'c': /* A constant. */
#endif
\f
static rtvec initialize_for_inline PROTO((tree));
-static void adjust_copied_decl_tree PROTO((tree));
static void note_modified_parmregs PROTO((rtx, rtx));
static void integrate_parm_decls PROTO((tree, struct inline_remap *,
rtvec));
return arg_vector;
}
-/* Adjust the BLOCK_END_NOTE pointers in a given copied DECL tree so that
- they all point to the new (copied) rtxs. */
-
-static void
-adjust_copied_decl_tree (block)
- register tree block;
-{
- register tree subblock;
- register rtx original_end;
-
- original_end = BLOCK_END_NOTE (block);
- if (original_end)
- {
- BLOCK_END_NOTE (block) = (rtx) NOTE_SOURCE_FILE (original_end);
- NOTE_SOURCE_FILE (original_end) = 0;
- }
-
- /* Process all subblocks. */
- for (subblock = BLOCK_SUBBLOCKS (block);
- subblock;
- subblock = TREE_CHAIN (subblock))
- adjust_copied_decl_tree (subblock);
-}
-
/* Copy NODE (as with copy_node). NODE must be a DECL. Set the
DECL_ABSTRACT_ORIGIN for the new accordinly. */
+1999-10-26 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
+ remember_end_note.
+
1999-10-21 Tom Tromey <tromey@cygnus.com>
* jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
if (block != 0)
{
BLOCK_VARS (block) = decls;
- BLOCK_TYPE_TAGS (block) = NULL_TREE;
BLOCK_SUBBLOCKS (block) = subblocks;
- remember_end_note (block);
}
/* In each subblock, record that this is its superior. */
case 'b':
print_node (file, "vars", BLOCK_VARS (node), indent + 4);
- print_node (file, "tags", BLOCK_TYPE_TAGS (node), indent + 4);
print_node (file, "supercontext", BLOCK_SUPERCONTEXT (node), indent + 4);
print_node (file, "subblocks", BLOCK_SUBBLOCKS (node), indent + 4);
print_node (file, "chain", BLOCK_CHAIN (node), indent + 4);
#define CASE_VECTOR_PC_RELATIVE 0
#endif
-/* Each time we expand the end of a binding contour (in `expand_end_bindings')
- and we emit a new NOTE_INSN_BLOCK_END note, we save a pointer to it here.
- This is used by the `remember_end_note' function to record the endpoint
- of each generated block in its associated BLOCK node. */
-
-static rtx last_block_end_note;
\f
/* Functions and data structures for expanding case statements. */
int i;
gcc_obstack_init (&stmt_obstack);
- ggc_add_rtx_root (&last_block_end_note, 1);
for (i = 0; i < 10; i++)
{
start_sequence ();
start = emit_note (NULL_PTR, NOTE_INSN_BLOCK_BEG);
fixup->before_jump = emit_note (NULL_PTR, NOTE_INSN_DELETED);
- last_block_end_note = emit_note (NULL_PTR, NOTE_INSN_BLOCK_END);
+ emit_note (NULL_PTR, NOTE_INSN_BLOCK_END);
fixup->context = block;
end_sequence ();
emit_insns_after (start, original_before_jump);
&& block_stack->data.block.exception_region);
}
-/* Given a pointer to a BLOCK node, save a pointer to the most recently
- generated NOTE_INSN_BLOCK_END in the BLOCK_END_NOTE field of the given
- BLOCK node. */
-
-void
-remember_end_note (block)
- register tree block;
-{
- BLOCK_END_NOTE (block) = last_block_end_note;
- last_block_end_note = NULL_RTX;
-}
-
/* Emit a handler label for a nonlocal goto handler.
Also emit code to store the handler label in SLOT before BEFORE_INSN. */
just going out of scope, so they are in scope for their cleanups. */
if (mark_ends)
- last_block_end_note = emit_note (NULL_PTR, NOTE_INSN_BLOCK_END);
+ emit_note (NULL_PTR, NOTE_INSN_BLOCK_END);
else
/* Get rid of the beginning-mark if we don't make an end-mark. */
NOTE_LINE_NUMBER (thisblock->data.block.first_insn) = NOTE_INSN_DELETED;
{
register tree block = make_node (BLOCK);
BLOCK_VARS (block) = vars;
- BLOCK_TYPE_TAGS (block) = tags;
BLOCK_SUBBLOCKS (block) = subblocks;
BLOCK_SUPERCONTEXT (block) = supercontext;
BLOCK_CHAIN (block) = chain;
\f
/* In a BLOCK node. */
#define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
-#define BLOCK_TYPE_TAGS(NODE) (BLOCK_CHECK (NODE)->block.type_tags)
#define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
#define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
/* Note: when changing this, make sure to find the places
#define BLOCK_CHAIN(NODE) TREE_CHAIN (NODE)
#define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
#define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
-#define BLOCK_END_NOTE(NODE) (BLOCK_CHECK (NODE)->block.end_note)
-/* Nonzero means that this block has separate live range regions */
-#define BLOCK_LIVE_RANGE_FLAG(NOTE) (BLOCK_CHECK (NOTE)->block.live_range_flag)
-
-/* Nonzero means that this block has a variable declared in it
- that is split into separate live ranges. */
-#define BLOCK_LIVE_RANGE_VAR_FLAG(NOTE) (BLOCK_CHECK (NOTE)->block.live_range_var_flag)
-
-/* Index for marking the start of the block for live ranges. */
-#define BLOCK_LIVE_RANGE_START(NOTE) (BLOCK_CHECK (NOTE)->block.live_range_start)
-
-/* Index for marking the end of the block for live ranges. */
-#define BLOCK_LIVE_RANGE_END(NOTE) (BLOCK_CHECK (NOTE)->block.live_range_end)
/* Nonzero means that this block is prepared to handle exceptions
listed in the BLOCK_VARS slot. */
unsigned handler_block_flag : 1;
unsigned abstract_flag : 1;
- unsigned live_range_flag : 1;
- unsigned live_range_var_flag : 1;
union tree_node *vars;
- union tree_node *type_tags;
union tree_node *subblocks;
union tree_node *supercontext;
union tree_node *abstract_origin;
- struct rtx_def *end_note;
- int live_range_start;
- int live_range_end;
};
\f
/* Define fields and accessors for nodes representing data types. */
extern int any_pending_cleanups PROTO ((int));
extern void init_stmt PROTO ((void));
extern void init_stmt_for_function PROTO ((void));
-extern void remember_end_note PROTO ((tree));
extern int drop_through_at_end_p PROTO ((void));
extern void expand_start_target_temps PROTO ((void));
extern void expand_end_target_temps PROTO ((void));