diff options
author | Jason Merrill <jason@redhat.com> | 2017-11-13 17:12:55 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2017-11-13 17:12:55 -0500 |
commit | 04757a2a49bd21c71af386a64591f77c165a0d93 (patch) | |
tree | 1abdf8c3ce6efdfe6e521741c681eae3a746db70 /gcc/cp/parser.c | |
parent | cd920e1348eaa1100b90f378f44e110152816149 (diff) | |
download | gcc-04757a2a49bd21c71af386a64591f77c165a0d93.zip gcc-04757a2a49bd21c71af386a64591f77c165a0d93.tar.gz gcc-04757a2a49bd21c71af386a64591f77c165a0d93.tar.bz2 |
Defer folding of *&.
* typeck.c (cp_build_fold_indirect_ref): New.
(cp_build_indirect_ref_1): Split out from cp_build_indirect_ref.
Add 'fold' parameter.
* cp-tree.h: Declare cp_build_fold_indirect_ref.
* call.c, class.c, cp-ubsan.c, decl.c, except.c, init.c, lambda.c,
parser.c, rtti.c, tree.c, typeck.c, typeck2.c: Use it.
* parser.c (do_range_for_auto_deduction): Use RO_UNARY_STAR.
(cp_convert_range_for): Likewise.
* typeck2.c (build_x_arrow): Use RO_ARROW.
From-SVN: r254712
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r-- | gcc/cp/parser.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 77b9637..1860bf0 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -11931,7 +11931,8 @@ do_range_for_auto_deduction (tree decl, tree range_expr) { iter_decl = build_decl (input_location, VAR_DECL, NULL_TREE, iter_type); - iter_decl = build_x_indirect_ref (input_location, iter_decl, RO_NULL, + iter_decl = build_x_indirect_ref (input_location, iter_decl, + RO_UNARY_STAR, tf_warning_or_error); TREE_TYPE (decl) = do_auto_deduction (TREE_TYPE (decl), iter_decl, auto_node); @@ -12048,7 +12049,7 @@ cp_convert_range_for (tree statement, tree range_decl, tree range_expr, /* The declaration is initialized with *__begin inside the loop body. */ cp_finish_decl (range_decl, - build_x_indirect_ref (input_location, begin, RO_NULL, + build_x_indirect_ref (input_location, begin, RO_UNARY_STAR, tf_warning_or_error), /*is_constant_init*/false, NULL_TREE, LOOKUP_ONLYCONVERTING); @@ -20843,7 +20844,7 @@ inject_this_parameter (tree ctype, cp_cv_quals quals) /* Clear this first to avoid shortcut in cp_build_indirect_ref. */ current_class_ptr = NULL_TREE; current_class_ref - = cp_build_indirect_ref (this_parm, RO_NULL, tf_warning_or_error); + = cp_build_fold_indirect_ref (this_parm); current_class_ptr = this_parm; } |