aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/init.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-09-27 16:05:34 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-09-27 16:05:34 -0400
commit93c0e0bb1d729b142f698d42fb4a61ad23a52505 (patch)
tree108a323659c8b36f70d1648d888403d8d41841bf /gcc/cp/init.c
parenta77bfaebbf433f5559d936bc0ec7b32633f00865 (diff)
downloadgcc-93c0e0bb1d729b142f698d42fb4a61ad23a52505.zip
gcc-93c0e0bb1d729b142f698d42fb4a61ad23a52505.tar.gz
gcc-93c0e0bb1d729b142f698d42fb4a61ad23a52505.tar.bz2
Require lvalues as specified by the standard.
* typeck.c (lvalue_or_else): Use real_lvalue_p. (cp_build_addr_expr_1): Split out of cp_build_unary_op. (cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces. (decay_conversion, get_member_function_from_ptrfunc): Adjust. (build_x_unary_op, build_reinterpret_cast_1): Adjust. (build_const_cast_1): Adjust. * cp-tree.h: Declare new fns. * call.c (build_this, convert_like_real, build_over_call): Adjust. (initialize_reference): Adjust. * class.c (build_base_path, convert_to_base_statically): Adjust. (build_vfn_ref, resolve_address_of_overloaded_function): Adjust. * cvt.c (build_up_reference, convert_to_reference): Adjust. * decl.c (register_dtor_fn): Adjust. * decl2.c (build_offset_ref_call_from_tree): Adjust. * except.c (initialize_handler_parm): Adjust. * init.c (build_offset_ref, build_delete, build_vec_delete): Adjust. * rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust. * tree.c (stabilize_expr): Adjust. From-SVN: r164666
Diffstat (limited to 'gcc/cp/init.c')
-rw-r--r--gcc/cp/init.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 189bcbe..5091d4e 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1649,8 +1649,7 @@ build_offset_ref (tree type, tree member, bool address_p)
if (flag_ms_extensions)
{
PTRMEM_OK_P (member) = 1;
- return cp_build_unary_op (ADDR_EXPR, member, 0,
- tf_warning_or_error);
+ return cp_build_addr_expr (member, tf_warning_or_error);
}
error ("invalid use of non-static member function %qD",
TREE_OPERAND (member, 1));
@@ -3246,7 +3245,7 @@ build_delete (tree type, tree addr, special_function_kind auto_delete,
/* Don't check PROTECT here; leave that decision to the
destructor. If the destructor is accessible, call it,
else report error. */
- addr = cp_build_unary_op (ADDR_EXPR, addr, 0, tf_warning_or_error);
+ addr = cp_build_addr_expr (addr, tf_warning_or_error);
if (TREE_SIDE_EFFECTS (addr))
addr = save_expr (addr);
@@ -3486,7 +3485,7 @@ build_vec_delete (tree base, tree maxindex,
bad name. */
maxindex = array_type_nelts_total (type);
type = strip_array_types (type);
- base = cp_build_unary_op (ADDR_EXPR, base, 1, tf_warning_or_error);
+ base = cp_build_addr_expr (base, tf_warning_or_error);
if (TREE_SIDE_EFFECTS (base))
{
base_init = get_target_expr (base);