re PR java/13824 (gcj SEGV with simple .java program)

PR java/13824
	* tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
	as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
	recursion.

From-SVN: r76872
This commit is contained in:
Roger Sayle 2004-01-29 17:13:21 +00:00 committed by Roger Sayle
parent 4a5e0ed992
commit 06f12aa01b
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2004-01-29 Roger Sayle <roger@eyesopen.com>
PR java/13824
* tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
recursion.
2004-01-29 Kazu Hirata <kazu@cs.umass.edu>
* config/frv/frv.c: Don't mention deprecated macros in

View File

@ -1656,6 +1656,13 @@ unsafe_for_reeval (tree expr)
unsafeness = 1;
break;
case EXIT_BLOCK_EXPR:
/* EXIT_BLOCK_LABELED_BLOCK, a.k.a. TREE_OPERAND (expr, 0), holds
a reference to an ancestor LABELED_BLOCK, so we need to avoid
unbounded recursion in the 'e' traversal code below. */
exp = EXIT_BLOCK_RETURN (expr);
return exp ? unsafe_for_reeval (exp) : 0;
default:
tmp = (*lang_hooks.unsafe_for_reeval) (expr);
if (tmp >= 0)