]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: copy location to AGGR_INIT_EXPR
authorJason Merrill <jason@redhat.com>
Wed, 13 Dec 2023 04:48:57 +0000 (23:48 -0500)
committerJason Merrill <jason@redhat.com>
Wed, 13 Dec 2023 16:25:13 +0000 (11:25 -0500)
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.

gcc/cp/tree.cc
gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
gcc/testsuite/g++.dg/template/copy1.C

index da4d5c51f074cd602387c71440f4265e464cfbae..c4e41fd7b5c92dde3106b33103b8d46ab3f27e13 100644 (file)
@@ -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;
index a410e4826647f50663ee8df7fad8cae760b1b7c6..586ee54124cf6236e80cbaa520b4398a142e79a2 100644 (file)
@@ -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()
index eacd9e2c02573038df395cee4f056f69eb06a28f..7e0a3805a773a96ced23bdfae99267045c6fa684 100644 (file)
@@ -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 } }