diff options
author | Richard Henderson <rth@redhat.com> | 2001-03-28 03:04:51 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-03-28 03:04:51 -0800 |
commit | 52a11cbfcf0cfb32628b6953588b6af4037ac0b6 (patch) | |
tree | a923c8785a06871784c5177530130063c4925f5a /gcc/cp/expr.c | |
parent | ce1c98ea459813570b4588427030daa03958fda6 (diff) | |
download | gcc-52a11cbfcf0cfb32628b6953588b6af4037ac0b6.zip gcc-52a11cbfcf0cfb32628b6953588b6af4037ac0b6.tar.gz gcc-52a11cbfcf0cfb32628b6953588b6af4037ac0b6.tar.bz2 |
IA-64 ABI Exception Handling.
From-SVN: r40924
Diffstat (limited to 'gcc/cp/expr.c')
-rw-r--r-- | gcc/cp/expr.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index fc22460..9a9eb86 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -88,6 +88,7 @@ cplus_expand_expr (exp, target, tmode, modifier) tree type = TREE_TYPE (exp); register enum machine_mode mode = TYPE_MODE (type); register enum tree_code code = TREE_CODE (exp); + rtx ret; /* No sense saving up arithmetic to be done if it's all in the wrong mode to form part of an address. @@ -103,16 +104,19 @@ cplus_expand_expr (exp, target, tmode, modifier) target, tmode, modifier); case OFFSET_REF: - { - return expand_expr (default_conversion (resolve_offset_ref (exp)), - target, tmode, EXPAND_NORMAL); - } + return expand_expr (default_conversion (resolve_offset_ref (exp)), + target, tmode, EXPAND_NORMAL); case THROW_EXPR: expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, 0); - expand_internal_throw (); return NULL; + case MUST_NOT_THROW_EXPR: + expand_eh_region_start (); + ret = expand_expr (TREE_OPERAND (exp, 0), target, tmode, modifier); + expand_eh_region_end_must_not_throw (build_call (terminate_node, 0)); + return ret; + case EMPTY_CLASS_EXPR: /* We don't need to generate any code for an empty class. */ return const0_rtx; |