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:
parent
4a5e0ed992
commit
06f12aa01b
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue