aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2017-02-10 13:24:36 -0500
committerJason Merrill <jason@gcc.gnu.org>2017-02-10 13:24:36 -0500
commitf494ac0ebd96a964914b7d9cc7b208a69865f9f1 (patch)
tree270110f1bc2483d54507241bec804e88514dd84e /gcc
parentc16b872c8f1e32c11bb87346835e23125fce3747 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/cp/semantics.c4
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold9.C12
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()
+{
+}