aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/typeck.c20
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/ptrmem8.C4
-rw-r--r--gcc/testsuite/g++.dg/template/dtor6.C8
5 files changed, 28 insertions, 18 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6b19375..bc2b48e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * typeck.c (build_x_unary_op): Use the location_t argument in
+ three error_at.
+
2019-10-29 Marek Polacek <polacek@redhat.com>
PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
@@ -25,8 +30,8 @@
* cp-tree.h (cxx_simulate_builtin_function_decl): Declare.
* decl.c (cxx_simulate_builtin_function_decl): New function.
- * cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define
- to the above.
+ * cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL):
+ Define to the above.
2019-10-28 Martin Sebor <msebor@redhat.com>
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 627dfc2..ad46d42 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -5829,10 +5829,10 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
if (DECL_CONSTRUCTOR_P (fn) || DECL_DESTRUCTOR_P (fn))
{
if (complain & tf_error)
- error (DECL_CONSTRUCTOR_P (fn)
- ? G_("taking address of constructor %qD")
- : G_("taking address of destructor %qD"),
- fn);
+ error_at (loc, DECL_CONSTRUCTOR_P (fn)
+ ? G_("taking address of constructor %qD")
+ : G_("taking address of destructor %qD"),
+ fn);
return error_mark_node;
}
}
@@ -5847,19 +5847,19 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
{
if (complain & tf_error)
{
- error ("invalid use of %qE to form a "
- "pointer-to-member-function", xarg.get_value ());
+ error_at (loc, "invalid use of %qE to form a "
+ "pointer-to-member-function", xarg.get_value ());
if (TREE_CODE (xarg) != OFFSET_REF)
- inform (input_location, " a qualified-id is required");
+ inform (loc, " a qualified-id is required");
}
return error_mark_node;
}
else
{
if (complain & tf_error)
- error ("parentheses around %qE cannot be used to form a"
- " pointer-to-member-function",
- xarg.get_value ());
+ error_at (loc, "parentheses around %qE cannot be used to "
+ "form a pointer-to-member-function",
+ xarg.get_value ());
else
return error_mark_node;
PTRMEM_OK_P (xarg) = 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index db443f7..1c478fe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/other/ptrmem8.C: Test locations too.
+ * g++.dg/template/dtor6.C: Likewise.
+
2019-10-29 Marek Polacek <polacek@redhat.com>
PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
diff --git a/gcc/testsuite/g++.dg/other/ptrmem8.C b/gcc/testsuite/g++.dg/other/ptrmem8.C
index d0b0ba7..755b0ad 100644
--- a/gcc/testsuite/g++.dg/other/ptrmem8.C
+++ b/gcc/testsuite/g++.dg/other/ptrmem8.C
@@ -6,11 +6,11 @@ struct A {};
template<int> void foo(void (A::* f)())
{
A a;
- &(a.*f); // { dg-error "invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" }
+ &(a.*f); // { dg-error "3:invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" }
}
template<int> void bar(void (A::* f)())
{
A *p;
- &(p->*f); // { dg-error "invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" }
+ &(p->*f); // { dg-error "3:invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" }
}
diff --git a/gcc/testsuite/g++.dg/template/dtor6.C b/gcc/testsuite/g++.dg/template/dtor6.C
index c44b780..a3d778a1 100644
--- a/gcc/testsuite/g++.dg/template/dtor6.C
+++ b/gcc/testsuite/g++.dg/template/dtor6.C
@@ -5,12 +5,12 @@ template<int> struct A
static int i;
};
-template<int N> int A<N>::i = { A::~A }; // { dg-error "non-static member function" }
+template<int N> int A<N>::i = { A::~A }; // { dg-error "36:invalid use of non-static member function" }
template class A<0>;
struct X { };
-int i1 = X::~X; // { dg-error "non-static member function" }
-int i2 = &X::~X; // { dg-error "address of destructor" }
-int i3 = &A<0>::~A; // { dg-error "address of destructor" }
+int i1 = X::~X; // { dg-error "13:invalid use of non-static member function" }
+int i2 = &X::~X; // { dg-error "10:taking address of destructor" }
+int i3 = &A<0>::~A; // { dg-error "10:taking address of destructor" }