diff options
author | Jason Merrill <jason@redhat.com> | 2017-02-10 13:24:36 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2017-02-10 13:24:36 -0500 |
commit | f494ac0ebd96a964914b7d9cc7b208a69865f9f1 (patch) | |
tree | 270110f1bc2483d54507241bec804e88514dd84e /gcc | |
parent | c16b872c8f1e32c11bb87346835e23125fce3747 (diff) | |
download | gcc-f494ac0ebd96a964914b7d9cc7b208a69865f9f1.zip gcc-f494ac0ebd96a964914b7d9cc7b208a69865f9f1.tar.gz gcc-f494ac0ebd96a964914b7d9cc7b208a69865f9f1.tar.bz2 |
PR c++/71285 - member of fold-expression
* semantics.c (finish_unary_fold_expr)
(finish_binary_fold_expr): Use null type for fold-expressions.
From-SVN: r245340
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/fold9.C | 12 |
3 files changed, 18 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 688a3bc..68c5d9d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2017-02-10 Jason Merrill <jason@redhat.com> + PR c++/71285 - member of fold-expression + * semantics.c (finish_unary_fold_expr) + (finish_binary_fold_expr): Use null type for fold-expressions. + PR c++/79401 - protected inherited constructor * call.c (enforce_access): For inheriting constructor, find a base binfo in the path we already have. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index e9fc4aa..6a47476 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -9437,7 +9437,7 @@ finish_unary_fold_expr (tree expr, int op, tree_code dir) // Build the fold expression. tree code = build_int_cstu (integer_type_node, abs (op)); - tree fold = build_min (dir, unknown_type_node, code, pack); + tree fold = build_min_nt_loc (UNKNOWN_LOCATION, dir, code, pack); FOLD_EXPR_MODIFY_P (fold) = (op < 0); return fold; } @@ -9463,7 +9463,7 @@ finish_binary_fold_expr (tree pack, tree init, int op, tree_code dir) { pack = make_pack_expansion (pack); tree code = build_int_cstu (integer_type_node, abs (op)); - tree fold = build_min (dir, unknown_type_node, code, pack, init); + tree fold = build_min_nt_loc (UNKNOWN_LOCATION, dir, code, pack, init); FOLD_EXPR_MODIFY_P (fold) = (op < 0); return fold; } diff --git a/gcc/testsuite/g++.dg/cpp1z/fold9.C b/gcc/testsuite/g++.dg/cpp1z/fold9.C new file mode 100644 index 0000000..578b8d0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/fold9.C @@ -0,0 +1,12 @@ +// PR c++/71285 +// { dg-options -std=c++1z } + +template<typename... Args> +void spurious(Args... args) +{ + (... + args).member; +} + +int main() +{ +} |