Skip to content

Commit

Permalink
PR c++/69317 - [6 regression] wrong ABI version in -Wabi warnings
Browse files Browse the repository at this point in the history
gcc/cp/ChangeLog:
2016-01-27  Martin Sebor  <msebor@redhat.com>

	PR c++/69317
	* mangle.c (mangle_decl): Reference the correct (saved) version
	of the ABI in -Wabi diagnostics.

gcc/testsuite/ChangeLog:
2016-01-27  Martin Sebor  <msebor@redhat.com>

	PR c++/69317
	* g++.dg/abi/Wabi-2-2.C: New test.
	* g++.dg/abi/Wabi-2-3.C: New test.
	* g++.dg/abi/Wabi-3-2.C: New test.
	* g++.dg/abi/Wabi-3-3.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232881 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
msebor committed Jan 27, 2016
1 parent 9ce22fb commit 18e9663
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 3 deletions.
6 changes: 6 additions & 0 deletions gcc/cp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2016-01-27 Martin Sebor <msebor@redhat.com>

PR c++/69317
* mangle.c (mangle_decl): Reference the correct (saved) version
of the ABI in -Wabi diagnostics.

2016-01-27 Marek Polacek <polacek@redhat.com>

PR c++/69496
Expand Down
6 changes: 3 additions & 3 deletions gcc/cp/mangle.c
Original file line number Diff line number Diff line change
Expand Up @@ -3657,13 +3657,13 @@ 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, warn_abi_version, id2,
flag_abi_version, id);
G.entity, save_ver, id2,
warn_abi_version, id);
else
warning_at (DECL_SOURCE_LOCATION (G.entity), OPT_Wabi,
"the mangled name of %qD changes between "
"-fabi-version=%d (%D) and -fabi-version=%d (%D)",
G.entity, flag_abi_version, id,
G.entity, save_ver, id,
warn_abi_version, id2);
}

Expand Down
8 changes: 8 additions & 0 deletions gcc/testsuite/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2016-01-27 Martin Sebor <msebor@redhat.com>

PR c++/69317
* g++.dg/abi/Wabi-2-2.C: New test.
* g++.dg/abi/Wabi-2-3.C: New test.
* g++.dg/abi/Wabi-3-2.C: New test.
* g++.dg/abi/Wabi-3-3.C: New test.

2016-01-27 Richard Biener <rguenther@suse.de>

PR tree-optimization/69166
Expand Down
14 changes: 14 additions & 0 deletions gcc/testsuite/g++.dg/abi/Wabi-2-2.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Verify that no diagnostic is issued when the version specified
// via -Wabi= matches the version specified by -fabi-version=.

// { dg-options "-Werror -Wabi=2 -fabi-version=2" }
// { dg-do compile }

// The mangling of templates with a non-type template parameter
// of reference type changed in ABI version 3:
extern int N;
template <int &> struct S { };

// Expect no diagnostic.
void foo (S<N>) { }

16 changes: 16 additions & 0 deletions gcc/testsuite/g++.dg/abi/Wabi-2-3.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// PR c++/69317 - [6 regression] wrong ABI version in -Wabi warnings
// Exercise that the correct ABI versions are referenced in the -Wabi
// diagnostic. See also the equivalent Wabi-3-2.C test.

// { dg-options "-Wabi=2 -fabi-version=3" }
// { dg-do compile }

// The mangling of templates with a non-type template parameter
// of reference type changed in ABI version 3:
extern int N;
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\\)" }

16 changes: 16 additions & 0 deletions gcc/testsuite/g++.dg/abi/Wabi-3-2.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// PR c++/69317 - [6 regression] wrong ABI version in -Wabi warnings
// Exercise that the correct ABI versions are referenced in the -Wabi
// diagnostic. See also the equivalent Wabi-2-3.C test.

// { dg-options "-Wabi=3 -fabi-version=2" }
// { dg-do compile }

// The mangling of templates with a non-type template parameter
// of reference type changed in ABI version 3:
extern int N;
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\\)" }

14 changes: 14 additions & 0 deletions gcc/testsuite/g++.dg/abi/Wabi-3-3.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Verify that no diagnostic is issued when the version specified
// via -Wabi= matches the version specified by -fabi-version=.

// { dg-options "-Werror -Wabi=3 -fabi-version=3" }
// { dg-do compile }

// The mangling of templates with a non-type template parameter
// of reference type changed in ABI version 3:
extern int N;
template <int &> struct S { };

// Expect no diagnostic.
void foo (S<N>) { }

0 comments on commit 18e9663

Please sign in to comment.