diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-28 11:04:51 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-28 11:04:51 +0000 |
commit | df4b504cae7856b864a073ab9e6e61cf2ad23a97 (patch) | |
tree | a923c8785a06871784c5177530130063c4925f5a /gcc/cp/expr.c | |
parent | d3ab49408bd5b876d10076caea78dc81a5f85dd7 (diff) | |
download | gcc-df4b504cae7856b864a073ab9e6e61cf2ad23a97.tar.gz |
IA-64 ABI Exception Handling.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40924 138bc75d-0d04-0410-961f-82ee72b054a4
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 fc22460ff97..9a9eb86f526 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; |