print-tree.c (print_node): Print base for OFFSET_TYPEs.
* print-tree.c (print_node): Print base for OFFSET_TYPEs. * except.c (expand_eh_region_start_for_decl): Always start a new block. * stmt.c (is_eh_region): Make sure current_function is present, too. From-SVN: r28621
This commit is contained in:
parent
a124a0ca97
commit
e7b9b18e4a
@ -1,3 +1,10 @@
|
|||||||
|
Mon Aug 9 01:52:24 1999 Jason Merrill <jason@yorick.cygnus.com>
|
||||||
|
|
||||||
|
* print-tree.c (print_node): Print base for OFFSET_TYPEs.
|
||||||
|
|
||||||
|
* except.c (expand_eh_region_start_for_decl): Always start a new block.
|
||||||
|
* stmt.c (is_eh_region): Make sure current_function is present, too.
|
||||||
|
|
||||||
Mon Aug 9 01:15:24 1999 Jeffrey A Law (law@cygnus.com)
|
Mon Aug 9 01:15:24 1999 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
* pa.h (HARD_REGNO_MODE_OK): Correctly handle FPregs, even when
|
* pa.h (HARD_REGNO_MODE_OK): Correctly handle FPregs, even when
|
||||||
|
34
gcc/except.c
34
gcc/except.c
@ -1,5 +1,5 @@
|
|||||||
/* Implements exception handling.
|
/* Implements exception handling.
|
||||||
Copyright (C) 1989, 92-97, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1992-1999 Free Software Foundation, Inc.
|
||||||
Contributed by Mike Stump <mrs@cygnus.com>.
|
Contributed by Mike Stump <mrs@cygnus.com>.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
@ -1400,23 +1400,21 @@ expand_eh_region_start_for_decl (decl)
|
|||||||
if (! doing_eh (0))
|
if (! doing_eh (0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* We need a new block to record the start and end of the
|
||||||
|
dynamic handler chain. We also want to prevent jumping into
|
||||||
|
a try block. */
|
||||||
|
expand_start_bindings (0);
|
||||||
|
|
||||||
|
/* But we don't need or want a new temporary level. */
|
||||||
|
pop_temp_slots ();
|
||||||
|
|
||||||
|
/* Mark this block as created by expand_eh_region_start. This
|
||||||
|
is so that we can pop the block with expand_end_bindings
|
||||||
|
automatically. */
|
||||||
|
mark_block_as_eh_region ();
|
||||||
|
|
||||||
if (exceptions_via_longjmp)
|
if (exceptions_via_longjmp)
|
||||||
{
|
{
|
||||||
/* We need a new block to record the start and end of the
|
|
||||||
dynamic handler chain. We could always do this, but we
|
|
||||||
really want to permit jumping into such a block, and we want
|
|
||||||
to avoid any errors or performance impact in the SJ EH code
|
|
||||||
for now. */
|
|
||||||
expand_start_bindings (0);
|
|
||||||
|
|
||||||
/* But we don't need or want a new temporary level. */
|
|
||||||
pop_temp_slots ();
|
|
||||||
|
|
||||||
/* Mark this block as created by expand_eh_region_start. This
|
|
||||||
is so that we can pop the block with expand_end_bindings
|
|
||||||
automatically. */
|
|
||||||
mark_block_as_eh_region ();
|
|
||||||
|
|
||||||
/* Arrange for returns and gotos to pop the entry we make on the
|
/* Arrange for returns and gotos to pop the entry we make on the
|
||||||
dynamic handler stack. */
|
dynamic handler stack. */
|
||||||
expand_dhc_cleanup (decl);
|
expand_dhc_cleanup (decl);
|
||||||
@ -1489,8 +1487,7 @@ expand_eh_region_end (handler)
|
|||||||
|
|
||||||
enqueue_eh_entry (&ehqueue, entry);
|
enqueue_eh_entry (&ehqueue, entry);
|
||||||
|
|
||||||
/* If we have already started ending the bindings, don't recurse.
|
/* If we have already started ending the bindings, don't recurse. */
|
||||||
This only happens when exceptions_via_longjmp is true. */
|
|
||||||
if (is_eh_region ())
|
if (is_eh_region ())
|
||||||
{
|
{
|
||||||
/* Because we don't need or want a new temporary level and
|
/* Because we don't need or want a new temporary level and
|
||||||
@ -1501,7 +1498,6 @@ expand_eh_region_end (handler)
|
|||||||
|
|
||||||
mark_block_as_not_eh_region ();
|
mark_block_as_not_eh_region ();
|
||||||
|
|
||||||
/* Maybe do this to prevent jumping in and so on... */
|
|
||||||
expand_end_bindings (NULL_TREE, 0, 0);
|
expand_end_bindings (NULL_TREE, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Prints out tree in human readable form - GNU C-compiler
|
/* Prints out tree in human readable form - GNU C-compiler
|
||||||
Copyright (C) 1990, 91, 93-97, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1990, 91, 93-98, 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
@ -514,6 +514,9 @@ print_node (file, prefix, node, indent)
|
|||||||
print_node_brief (file, "method basetype", TYPE_METHOD_BASETYPE (node), indent + 4);
|
print_node_brief (file, "method basetype", TYPE_METHOD_BASETYPE (node), indent + 4);
|
||||||
print_node (file, "arg-types", TYPE_ARG_TYPES (node), indent + 4);
|
print_node (file, "arg-types", TYPE_ARG_TYPES (node), indent + 4);
|
||||||
}
|
}
|
||||||
|
else if (TREE_CODE (node) == OFFSET_TYPE)
|
||||||
|
print_node_brief (file, "basetype", TYPE_OFFSET_BASETYPE (node),
|
||||||
|
indent + 4);
|
||||||
if (TYPE_CONTEXT (node))
|
if (TYPE_CONTEXT (node))
|
||||||
print_node_brief (file, "context", TYPE_CONTEXT (node), indent + 4);
|
print_node_brief (file, "context", TYPE_CONTEXT (node), indent + 4);
|
||||||
|
|
||||||
|
@ -3124,7 +3124,8 @@ mark_block_as_not_eh_region ()
|
|||||||
int
|
int
|
||||||
is_eh_region ()
|
is_eh_region ()
|
||||||
{
|
{
|
||||||
return block_stack && block_stack->data.block.exception_region;
|
return (current_function && block_stack
|
||||||
|
&& block_stack->data.block.exception_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Given a pointer to a BLOCK node, save a pointer to the most recently
|
/* Given a pointer to a BLOCK node, save a pointer to the most recently
|
||||||
|
Loading…
x
Reference in New Issue
Block a user