* tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
recursion.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76872
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
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)