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.
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;
{
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()
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 } }