diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-27 20:05:34 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-27 20:05:34 +0000 |
commit | d6fbd579a13ed232f0d25237c7d661fe00780f83 (patch) | |
tree | 108a323659c8b36f70d1648d888403d8d41841bf /gcc/cp/init.c | |
parent | 0b0b7fcc1da833360e6ccd1f46664c626c57b827 (diff) | |
download | gcc-d6fbd579a13ed232f0d25237c7d661fe00780f83.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164666 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/init.c')
-rw-r--r-- | gcc/cp/init.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 189bcbec9a5..5091d4e749e 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); |