aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2023-12-12 23:48:57 -0500
committerJason Merrill <jason@redhat.com>2023-12-13 11:25:13 -0500
commit52b4b7d7f5c7c09f5aaf3934978de9702d8c214b (patch)
tree2b9f14515fe9a5108f51944d6d9518ec50901087
parentd2b269ce30d77dbfc6c28c75887c330d4698b132 (diff)
downloadgcc-52b4b7d7f5c7c09f5aaf3934978de9702d8c214b.zip
gcc-52b4b7d7f5c7c09f5aaf3934978de9702d8c214b.tar.gz
gcc-52b4b7d7f5c7c09f5aaf3934978de9702d8c214b.tar.bz2
c++: copy location to AGGR_INIT_EXPR
When building an AGGR_INIT_EXPR from a CALL_EXPR, we shouldn't lose location information. gcc/cp/ChangeLog: * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/constexpr-nsdmi7b.C: Adjust line. * g++.dg/template/copy1.C: Likewise.
-rw-r--r--gcc/cp/tree.cc1
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C4
-rw-r--r--gcc/testsuite/g++.dg/template/copy1.C2
3 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index da4d5c5..c4e41fd 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -689,6 +689,7 @@ build_aggr_init_expr (tree type, tree init)
CALL_EXPR_OPERATOR_SYNTAX (rval) = CALL_EXPR_OPERATOR_SYNTAX (init);
CALL_EXPR_ORDERED_ARGS (rval) = CALL_EXPR_ORDERED_ARGS (init);
CALL_EXPR_REVERSE_ARGS (rval) = CALL_EXPR_REVERSE_ARGS (init);
+ SET_EXPR_LOCATION (rval, EXPR_LOCATION (init));
}
else
rval = init;
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
index a410e48..586ee54 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
@@ -20,8 +20,8 @@ bar()
{
A a = foo();
a.p->n = 5;
- return a;
-} // { dg-error "non-.constexpr." "" { target c++20_down } }
+ return a; // { dg-error "non-.constexpr." "" { target c++20_down } }
+}
constexpr int
baz()
diff --git a/gcc/testsuite/g++.dg/template/copy1.C b/gcc/testsuite/g++.dg/template/copy1.C
index eacd9e2..7e0a380 100644
--- a/gcc/testsuite/g++.dg/template/copy1.C
+++ b/gcc/testsuite/g++.dg/template/copy1.C
@@ -6,10 +6,10 @@
struct A
{
- // { dg-error "reference" "" { target c++14_down } .+1 }
A(A&); // { dg-message "A::A" "" { target c++14_down } }
template <class T> A(T); // { dg-message "A::A" "" { target c++14_down } }
};
+// { dg-error "reference" "" { target c++14_down } .+1 }
A a = 0; // { dg-error "no match" "" { target c++14_down } }