summaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2004-06-11 14:41:47 -0400
committerJason Merrill <jason@gcc.gnu.org>2004-06-11 14:41:47 -0400
commit67c605a553faab6244a1b1d987059798e6c1f9aa (patch)
tree53b714fbb57b9a4edc2c059014d88e351591041f /gcc/tree-eh.c
parent67fc0c0f596944a4bc88cb8d8061bf4c8753c03f (diff)
downloadgcc-67c605a553faab6244a1b1d987059798e6c1f9aa.tar.gz
i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* 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. From-SVN: r82992
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;
}