aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/check-init.c
diff options
context:
space:
mode:
authorPer Bothner <bothner@cygnus.com>1999-01-08 15:50:10 +0000
committerPer Bothner <bothner@gcc.gnu.org>1999-01-08 07:50:10 -0800
commitb82daa87018663e0eb5db1ff1618070a55b08dc1 (patch)
treeba6970e6a445fefc6399996a38e4e93bd830d686 /gcc/java/check-init.c
parent642cac7ba0f1a07651de641ac1f00bc5b4744ed6 (diff)
downloadgcc-b82daa87018663e0eb5db1ff1618070a55b08dc1.zip
gcc-b82daa87018663e0eb5db1ff1618070a55b08dc1.tar.gz
gcc-b82daa87018663e0eb5db1ff1618070a55b08dc1.tar.bz2
check-init.c (check_init): If compiling to native, we don't see THROW_EXPR.
@ * 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). From-SVN: r24575
Diffstat (limited to 'gcc/java/check-init.c')
-rw-r--r--gcc/java/check-init.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c
index c4b73e2..ec3e5ad 100644
--- a/gcc/java/check-init.c
+++ b/gcc/java/check-init.c
@@ -571,12 +571,12 @@ check_init (exp, before)
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:
@@ -649,11 +649,16 @@ check_init (exp, before)
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;