diff options
author | Richard Henderson <rth@redhat.com> | 2004-07-16 14:13:08 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-07-16 14:13:08 -0700 |
commit | d25cee4d2b1a7c4f387a47c4163d8f7c241f2a1c (patch) | |
tree | a6887d7a4c296d5e39f29a2367845311f7100e89 /gcc/tree-eh.c | |
parent | 4c86f32571913801c3e876d2621ef74adce3fdbc (diff) | |
download | gcc-d25cee4d2b1a7c4f387a47c4163d8f7c241f2a1c.zip gcc-d25cee4d2b1a7c4f387a47c4163d8f7c241f2a1c.tar.gz gcc-d25cee4d2b1a7c4f387a47c4163d8f7c241f2a1c.tar.bz2 |
tree-def (WITH_SIZE_EXPR): New.
* tree-def (WITH_SIZE_EXPR): New.
* explow.c (expr_size, int_expr_size): Handle WITH_SIZE_EXPR.
* expr.c (expand_expr_real_1): Likewise.
* gimplify.c (maybe_with_size_expr): New.
(gimplify_arg, gimplify_modify_expr): Use it.
(gimplify_modify_expr_to_memcpy): Take size parameter.
(gimplify_modify_expr_to_memset): Likewise.
(gimplify_expr): Handle WITH_SIZE_EXPR.
* tree-alias-common.c (find_func_aliases): Likewise.
* tree-eh.c (tree_could_trap_p): Likewise.
(tree_could_throw_p): Likewise.
* tree-gimple.c (is_gimple_lvalue): Likewise.
(get_call_expr_in): Likewise.
* tree-inline.c (estimate_num_insns_1): Likewise.
(expand_calls_inline): Likewise.
* tree-nested.c (convert_call_expr): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-sra.c (sra_walk_expr): Likewise.
* tree-ssa-alias.c (add_pointed_to_expr): Likewise.
* tree-ssa-ccp.c (get_rhs, set_rhs): Likewise.
* tree-ssa-operands.c (get_expr_operands): Likewise.
* tree-tailcall.c (find_tail_calls): Likewise.
* calls.c (expand_call): Reset old_stack_allocated after
calling emit_stack_restore.
* gcc.c-torture/compile/20020210-1.c: Remove XFAIL.
From-SVN: r84833
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r-- | gcc/tree-eh.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index b0638c0..b7fe64d 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1723,14 +1723,17 @@ tree_could_trap_p (tree expr) honor_trapv = true; } + restart: switch (code) { case COMPONENT_REF: case REALPART_EXPR: case IMAGPART_EXPR: case BIT_FIELD_REF: - t = TREE_OPERAND (expr, 0); - return tree_could_trap_p (t); + case WITH_SIZE_EXPR: + expr = TREE_OPERAND (expr, 0); + code = TREE_CODE (expr); + goto restart; case ARRAY_RANGE_REF: /* Let us be conservative here for now. We might be checking bounds of @@ -1843,6 +1846,8 @@ tree_could_throw_p (tree t) t = TREE_OPERAND (t, 1); } + if (TREE_CODE (t) == WITH_SIZE_EXPR) + t = TREE_OPERAND (t, 0); if (TREE_CODE (t) == CALL_EXPR) return (call_expr_flags (t) & ECF_NOTHROW) == 0; if (flag_non_call_exceptions) |