aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/except.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-12-04 15:13:01 -0500
committerJason Merrill <jason@gcc.gnu.org>2002-12-04 15:13:01 -0500
commitc246c65d7638d21cf773a4fab446870c93635390 (patch)
treeb67e00c5506ddc2ca24b4895249a6aa8ba5a0347 /gcc/cp/except.c
parentae598ab989bc96176b5218df66234a006acdf52e (diff)
downloadgcc-c246c65d7638d21cf773a4fab446870c93635390.zip
gcc-c246c65d7638d21cf773a4fab446870c93635390.tar.gz
gcc-c246c65d7638d21cf773a4fab446870c93635390.tar.bz2
PR c++/8461, c++/8625
PR c++/8461, c++/8625 * integrate.c (copy_decl_for_inlining): Handle explicit invisible references. * tree-inline.c (initialize_inlined_parameters): Likewise. 2002-12-03 Jason Merrill <jason@redhat.com> PR c++/8461, c++/8625 * call.c (convert_for_arg_passing): Don't mess with error_mark_node. (cp_convert_parm_for_inlining): Remove. * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove. * cp-tree.h (ADDR_IS_INVISIREF): Remove. * except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code. From-SVN: r59827
Diffstat (limited to 'gcc/cp/except.c')
-rw-r--r--gcc/cp/except.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 848ef51..747cc1a 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -601,28 +601,12 @@ stabilize_throw_expr (exp, initp)
{
tree arg = TREE_VALUE (args);
tree arg_init_expr;
- if (TREE_CODE (arg) == ADDR_EXPR
- && ADDR_IS_INVISIREF (arg))
- {
- /* A sub-TARGET_EXPR. Recurse; we can't wrap the actual call
- without introducing an extra copy. */
- tree sub = TREE_OPERAND (arg, 0);
- if (TREE_CODE (sub) != TARGET_EXPR)
- abort ();
- sub = stabilize_throw_expr (sub, &arg_init_expr);
- TREE_OPERAND (arg, 0) = sub;
- if (TREE_SIDE_EFFECTS (arg_init_expr))
- init_expr = build (COMPOUND_EXPR, void_type_node, init_expr,
- arg_init_expr);
- }
- else
- {
- arg = stabilize_expr (arg, &arg_init_expr);
- if (TREE_SIDE_EFFECTS (arg_init_expr))
- init_expr = build (COMPOUND_EXPR, void_type_node, init_expr,
- arg_init_expr);
- }
+ arg = stabilize_expr (arg, &arg_init_expr);
+
+ if (TREE_SIDE_EFFECTS (arg_init_expr))
+ init_expr = build (COMPOUND_EXPR, void_type_node, init_expr,
+ arg_init_expr);
*p = tree_cons (NULL_TREE, arg, NULL_TREE);
p = &TREE_CHAIN (*p);
}