[gcc r14-6505] c++: copy location to AGGR_INIT_EXPR
Jason Merrill
jason@gcc.gnu.org
Wed Dec 13 16:48:06 GMT 2023
https://gcc.gnu.org/g:52b4b7d7f5c7c09f5aaf3934978de9702d8c214b
commit r14-6505-g52b4b7d7f5c7c09f5aaf3934978de9702d8c214b
Author: Jason Merrill <jason@redhat.com>
Date: Tue Dec 12 23:48:57 2023 -0500
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.
Diff:
---
gcc/cp/tree.cc | 1 +
gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C | 4 ++--
gcc/testsuite/g++.dg/template/copy1.C | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index da4d5c51f07..c4e41fd7b5c 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 a410e482664..586ee54124c 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 eacd9e2c025..7e0a3805a77 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 } }
More information about the Gcc-cvs
mailing list