diff options
author | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-01-08 15:50:10 +0000 |
---|---|---|
committer | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-01-08 15:50:10 +0000 |
commit | 90330e537620ed2fa43ee387735ffb948ce8257b (patch) | |
tree | ba6970e6a445fefc6399996a38e4e93bd830d686 /gcc/java/check-init.c | |
parent | 36f63c97ca12bb6a188a018babe60ec2cb0dc4e1 (diff) | |
download | gcc-90330e537620ed2fa43ee387735ffb948ce8257b.tar.gz |
@
* 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).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24575 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/check-init.c')
-rw-r--r-- | gcc/java/check-init.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c index c4b73e2921c..ec3e5adb173 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; |