summaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-11 18:41:47 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-11 18:41:47 +0000
commit3864ad30726e57c9e2f2931eb150ba7a677dfba6 (patch)
tree53b714fbb57b9a4edc2c059014d88e351591041f /gcc/tree-eh.c
parent0171a3f40a8831152741ffa9e04f9ba2fdf31cdf (diff)
downloadgcc-3864ad30726e57c9e2f2931eb150ba7a677dfba6.tar.gz
* config/i386/i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/i386/i386.c (ix86_va_arg): Remove. * config/rs6000/rs6000.h (EXPAND_BUILTIN_VA_ARG): Just abort. * config/rs6000/rs6000.c (rs6000_va_arg): Remove. * config/alpha/alpha.h (EXPAND_BUILTIN_VA_ARG): Just abort. * config/alpha/alpha.c (alpha_va_arg): Remove. * config/sparc/sparc.h (EXPAND_BUILTIN_VA_ARG): Just abort. * config/sparc/sparc.c (sparc_va_arg): Remove. * tree-ssa-operands.c (get_stmt_operands): Use a V_MAY_DEF if the assignment might throw. * tree-eh.c (tree_could_throw_p): Support non-call exceptions in expressions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82992 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r--gcc/tree-eh.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 7d389817622..a4a0bc41d6e 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -1716,24 +1716,16 @@ tree_could_throw_p (tree t)
return false;
if (TREE_CODE (t) == MODIFY_EXPR)
{
- tree sub = TREE_OPERAND (t, 1);
- if (TREE_CODE (sub) == CALL_EXPR)
- t = sub;
- else
- {
- if (flag_non_call_exceptions)
- {
- if (tree_could_trap_p (sub))
- return true;
- return tree_could_trap_p (TREE_OPERAND (t, 0));
- }
- return false;
- }
+ if (flag_non_call_exceptions
+ && tree_could_trap_p (TREE_OPERAND (t, 0)))
+ return true;
+ t = TREE_OPERAND (t, 1);
}
if (TREE_CODE (t) == CALL_EXPR)
return (call_expr_flags (t) & ECF_NOTHROW) == 0;
-
+ if (flag_non_call_exceptions)
+ return tree_could_trap_p (t);
return false;
}