* mangle.c (mangle_decl): Fix mangled name change warning.
authorJason Merrill <jason@redhat.com>
Mon, 1 Aug 2016 20:19:34 +0000 (16:19 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 1 Aug 2016 20:19:34 +0000 (16:19 -0400)
From-SVN: r238964

gcc/cp/ChangeLog
gcc/cp/mangle.c
gcc/testsuite/g++.dg/abi/Wabi-2-3.C
gcc/testsuite/g++.dg/abi/Wabi-3-2.C

index d792baf24755b1f20b895e8da2d46c04220ab667..2960579c3a200217a131bbd7009a01dfad55c862 100644 (file)
@@ -1,5 +1,7 @@
 2016-08-01  Jason Merrill  <jason@redhat.com>
 
+       * mangle.c (mangle_decl): Fix mangled name change warning.
+
        PR c++/72766
        * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
        of nelts.
index d5b26d64d8e4421f86c95c9a16ef3f287563eb8e..e0bbfc994b9f27cabc8d7ccccce8aaf95d88b625 100644 (file)
@@ -1,4 +1,4 @@
-/* Name mangling for the 3.0 C++ ABI.
+/* Name mangling for the 3.0 -*- C++ -*- ABI.
    Copyright (C) 2000-2016 Free Software Foundation, Inc.
    Written by Alex Samuel <samuel@codesourcery.com>
 
@@ -3732,6 +3732,7 @@ mangle_decl (const tree decl)
              id2 = mangle_decl_string (decl);
              id2 = targetm.mangle_decl_assembler_name (decl, id2);
            }
+         flag_abi_version = save_ver;
 
          if (id2 == id)
            /* OK.  */;
@@ -3740,8 +3741,8 @@ mangle_decl (const tree decl)
            warning_at (DECL_SOURCE_LOCATION (G.entity), OPT_Wabi,
                        "the mangled name of %qD changed between "
                        "-fabi-version=%d (%D) and -fabi-version=%d (%D)",
-                       G.entity, save_ver, id2,
-                       warn_abi_version, id);
+                       G.entity, warn_abi_version, id2,
+                       save_ver, id);
          else
            warning_at (DECL_SOURCE_LOCATION (G.entity), OPT_Wabi,
                        "the mangled name of %qD changes between "
index 5aadf5db7eab3d2d15c8221cd7e456cb26a5fc43..96a0f22546f0deeda7c3f393ced58f4f7a2e375d 100644 (file)
@@ -12,5 +12,5 @@ template <int &> struct S { };
 
 // Expect the diagnostic to reference the ABI version specified via
 // -fabi-version=3 and the ABI version specified via -Wabi=2.
-void foo (S<N>) { }   // { dg-warning "the mangled name of .void foo\\(S<N>\\). changed between -fabi-version=3 \\(_Z3foo1SILZ1NEE\\) and -fabi-version=2 \\(_Z3foo1SIL_Z1NEE\\)" }
+void foo (S<N>) { }   // { dg-warning "the mangled name of .void foo\\(S<N>\\). changed between -fabi-version=2 \\(_Z3foo1SILZ1NEE\\) and -fabi-version=3 \\(_Z3foo1SIL_Z1NEE\\)" }
 
index c65e3b6bd471a030a6b3ae4b697c7a085228d797..46bd7135200520a603909cb309145bded5363d01 100644 (file)
@@ -12,5 +12,5 @@ template <int &> struct S { };
 
 // Expect the diagnostic to reference the ABI version specified via
 // -fabi-version=2 and the ABI version specified via -Wabi=3.
-void foo (S<N>) { }   // { dg-warning "the mangled name of .void foo\\(S<N>\\). changed between -fabi-version=2 \\(_Z3foo1SIL_Z1NEE\\) and -fabi-version=3 \\(_Z3foo1SILZ1NEE\\)" }
+void foo (S<N>) { }   // { dg-warning "the mangled name of .void foo\\(S<N>\\). changes between -fabi-version=2 \\(_Z3foo1SILZ1NEE\\) and -fabi-version=3 \\(_Z3foo1SIL_Z1NEE\\)" }