* tree.c (maybe_warn_parm_abi): Inform the location of the class.
authorJason Merrill <jason@redhat.com>
Fri, 15 Jun 2018 20:22:38 +0000 (16:22 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 15 Jun 2018 20:22:38 +0000 (16:22 -0400)
From-SVN: r261653

gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/testsuite/g++.dg/abi/invisiref2a.C

index f465dae12c063ed6ad3bec55cc38bb3b3de9e4bc..2679ca6f1e8e4cd30e1dc7d18ab814c013a1db03 100644 (file)
@@ -1,3 +1,7 @@
+2018-06-15  Jason Merrill  <jason@redhat.com>
+
+       * tree.c (maybe_warn_parm_abi): Inform the location of the class.
+
 2018-06-14  Marek Polacek  <polacek@redhat.com>
 
        PR c++/86063
index 48a0ff373720c3cde57d2acef95228e880f7e9eb..a88481db1e0d066d4e8fa88a7904be377273ca34 100644 (file)
@@ -4074,25 +4074,23 @@ maybe_warn_parm_abi (tree t, location_t loc)
   if ((flag_abi_version == 12 || warn_abi_version == 12)
       && classtype_has_non_deleted_move_ctor (t))
     {
+      bool w;
       if (flag_abi_version > 12)
-       warning_at (loc, OPT_Wabi, "-fabi-version=13 (GCC 8.2) fixes the "
-                   "calling convention for %qT, which was accidentally "
-                   "changed in 8.1", t);
+       w = warning_at (loc, OPT_Wabi, "-fabi-version=13 (GCC 8.2) fixes the "
+                       "calling convention for %qT, which was accidentally "
+                       "changed in 8.1", t);
       else
-       warning_at (loc, OPT_Wabi, "-fabi-version=12 (GCC 8.1) accidentally "
-                   "changes the calling convention for %qT", t);
+       w = warning_at (loc, OPT_Wabi, "-fabi-version=12 (GCC 8.1) accident"
+                       "ally changes the calling convention for %qT", t);
+      if (w)
+       inform (location_of (t), " declared here");
       return;
     }
 
-  warning_at (loc, OPT_Wabi, "the calling convention for %qT changes in "
-             "-fabi-version=13 (GCC 8.2)", t);
-  static bool explained = false;
-  if (!explained)
-    {
-      inform (loc, " because all of its copy and move constructors "
-             "are deleted");
-      explained = true;
-    }
+  if (warning_at (loc, OPT_Wabi, "the calling convention for %qT changes in "
+                 "-fabi-version=13 (GCC 8.2)", t))
+    inform (location_of (t), " because all of its copy and move "
+           "constructors are deleted");
 }
 
 /* Returns true iff copying an object of type T (including via move
index 0533055328779ca32da0f398ed9cf35bf2a42e30..127ee0ae7639f2f06c2aa5fe421354d989a6432e 100644 (file)
@@ -3,7 +3,7 @@
 // { dg-additional-options "-fabi-version=12 -Wabi -fdump-tree-gimple" }
 // { dg-final { scan-tree-dump "struct S &" "gimple" } }
 
-struct S {
+struct S {                     // { dg-message "" }
   S(S&&) = default;
   int i;
 };