aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/expr.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-03-28 03:04:51 -0800
committerRichard Henderson <rth@gcc.gnu.org>2001-03-28 03:04:51 -0800
commit52a11cbfcf0cfb32628b6953588b6af4037ac0b6 (patch)
treea923c8785a06871784c5177530130063c4925f5a /gcc/cp/expr.c
parentce1c98ea459813570b4588427030daa03958fda6 (diff)
downloadgcc-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.c14
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;