+Fri Jan 8 15:48:03 1999 Per Bothner <bothner@cygnus.com>
+
+ * check-init.c (check_init): If compiling to native, we don't
+ see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw).
+
1999-01-08 Tom Tromey <tromey@cygnus.com>
* parse-scan.y (variable_declarator_id): Set or increment
case THROW_EXPR:
if (TREE_OPERAND (exp, 0))
check_init (TREE_OPERAND (exp, 0), before);
- SET_ALL (before);
- return;
+ goto never_continues;
case ERROR_MARK:
+ never_continues:
SET_ALL (before);
- break;
+ return;
case COND_EXPR:
case TRUTH_ANDIF_EXPR:
case NEW_CLASS_EXPR:
case CALL_EXPR:
{
+ tree func = TREE_OPERAND (exp, 0);
tree x = TREE_OPERAND (exp, 1);
- check_init (TREE_OPERAND (exp, 0), before);
-
+ if (TREE_CODE (func) == ADDR_EXPR)
+ func = TREE_OPERAND (func, 0);
+ check_init (func, before);
+
for ( ; x != NULL_TREE; x = TREE_CHAIN (x))
check_init (TREE_VALUE (x), before);
+ if (func == throw_node)
+ goto never_continues;
}
break;