diff options
author | Jason Merrill <jason@redhat.com> | 2002-12-04 15:13:01 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2002-12-04 15:13:01 -0500 |
commit | c246c65d7638d21cf773a4fab446870c93635390 (patch) | |
tree | b67e00c5506ddc2ca24b4895249a6aa8ba5a0347 /gcc/cp/except.c | |
parent | ae598ab989bc96176b5218df66234a006acdf52e (diff) | |
download | gcc-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.c | 26 |
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); } |