diff options
author | Joerg Koenig <jck@gmx.org> | 2019-07-14 21:03:26 (GMT) |
---|---|---|
committer | Joerg Koenig <jck@gmx.org> | 2019-07-14 21:03:26 (GMT) |
commit | 6f1eba855af00e0f2ef39c0a6a1fdd38d2d8b6a0 (patch) | |
tree | 2d2f87573d61f53334033648b9cabd9fb900ad0c /PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch | |
parent | 1e761bb0e127dd082236b6ba453790bbefed4128 (diff) | |
download | gcc-compiler-suite-6f1eba855af00e0f2ef39c0a6a1fdd38d2d8b6a0.zip gcc-compiler-suite-6f1eba855af00e0f2ef39c0a6a1fdd38d2d8b6a0.tar.gz gcc-compiler-suite-6f1eba855af00e0f2ef39c0a6a1fdd38d2d8b6a0.tar.bz2 |
Undo last commitREL_1_4_0_0REL_1_4_0_0refs/changes/25/8225/1
Patch already in official sources
Resolves: :jira:<issue>
See also: :jira:<issue>
Change-Id: I37ff3172d166955e7d2cbe6244da69d75eb4e1ae
Diffstat (limited to 'PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch')
-rw-r--r-- | PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch b/PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch deleted file mode 100644 index a597200..0000000 --- a/PATCHES/0020-gcc-9-deprecated-copy_false_positives.patch +++ /dev/null @@ -1,166 +0,0 @@ -commit c37377416dcbf21c6b9f6c7b83fd8f9587b0a517 -Author: Jason Merrill <jason@redhat.com> -Date: Wed Nov 21 18:04:02 2018 -0500 - - PR c++/88136 - -Wdeprecated-copy false positives - - Deprecating the copy operations because the class has a user-provided - destructor turns out to have too many false positives; this patch adjusts - -Wdeprecated-copy to only deprecate if the other copy operation is - user-provided. To get the earlier behavior, people can explicitly request - it with -Wdeprecated-copy-dtor. - - gcc/c-family/ - * c.opt (Wdeprecated-copy-dtor): New. - (Wdeprecated-copy): Move to -Wextra. - gcc/cp/ - * class.c (classtype_has_depr_implicit_copy): Rename from - classtype_has_user_copy_or_dtor. - * method.c (lazily_declare_fn): Adjust. - * decl2.c (cp_warn_deprecated_use): Refer to -Wdeprecated-copy-dtor - if deprecation is due to a destructor. - -diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index 3b6912ea1cc..98c1a748329 100644 ---- a/gcc/doc/invoke.texi -+++ b/gcc/doc/invoke.texi -@@ -228,7 +228,8 @@ in the following sections. - -fvisibility-ms-compat @gol - -fext-numeric-literals @gol - -Wabi=@var{n} -Wabi-tag -Wconversion-null -Wctor-dtor-privacy @gol ---Wdelete-non-virtual-dtor -Wdeprecated-copy -Wliteral-suffix @gol -+-Wdelete-non-virtual-dtor -Wdeprecated-copy -Wdeprecated-copy-dtor @gol -+-Wliteral-suffix @gol - -Wmultiple-inheritance -Wno-init-list-lifetime @gol - -Wnamespaces -Wnarrowing @gol - -Wpessimizing-move -Wredundant-move @gol -@@ -3000,8 +3001,10 @@ by @option{-Wall}. - @opindex Wno-deprecated-copy - Warn that the implicit declaration of a copy constructor or copy - assignment operator is deprecated if the class has a user-provided --copy constructor, copy assignment operator, or destructor, in C++11 --and up. This warning is enabled by @option{-Wall}. -+copy constructor or copy assignment operator, in C++11 and up. This -+warning is enabled by @option{-Wextra}. With -+@option{-Wdeprecated-copy-dtor}, also deprecate if the class has a -+user-provided destructor. - - @item -Wno-init-list-lifetime @r{(C++ and Objective-C++ only)} - @opindex Winit-list-lifetime -@@ -4407,6 +4410,7 @@ name is still supported, but the newer name is more descriptive.) - - @gccoptlist{-Wclobbered @gol - -Wcast-function-type @gol -+-Wdeprecated-copy @r{(C++ only)} @gol - -Wempty-body @gol - -Wignored-qualifiers @gol - -Wimplicit-fallthrough=3 @gol -diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt -index 6f88a1013d6..07ff1c84f96 100644 ---- a/gcc/c-family/c.opt -+++ b/gcc/c-family/c.opt -@@ -481,7 +481,12 @@ C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) CppReason(CPP_W_DEPRECATED) Var(warn_ - Warn if a deprecated compiler feature, class, method, or field is used. - - Wdeprecated-copy --C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wall) -+C++ ObjC++ Var(warn_deprecated_copy) Warning LangEnabledBy(C++ ObjC++, Wextra) -+Mark implicitly-declared copy operations as deprecated if the class has a -+user-provided copy operation. -+ -+Wdeprecated-copy-dtor -+C++ ObjC++ Var(warn_deprecated_copy, 2) Warning - Mark implicitly-declared copy operations as deprecated if the class has a - user-provided copy operation or destructor. - -diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h -index 111a123bb34..886abeaa3f9 100644 ---- a/gcc/cp/cp-tree.h -+++ b/gcc/cp/cp-tree.h -@@ -6272,7 +6272,7 @@ extern bool type_has_constexpr_default_constructor (tree); - extern bool type_has_virtual_destructor (tree); - extern bool classtype_has_move_assign_or_move_ctor_p (tree, bool user_declared); - extern bool classtype_has_non_deleted_move_ctor (tree); --extern tree classtype_has_user_copy_or_dtor (tree); -+extern tree classtype_has_depr_implicit_copy (tree); - extern bool type_build_ctor_call (tree); - extern bool type_build_dtor_call (tree); - extern void explain_non_literal_class (tree); -diff --git a/gcc/cp/class.c b/gcc/cp/class.c -index 57261511a90..9c175f85cf6 100644 ---- a/gcc/cp/class.c -+++ b/gcc/cp/class.c -@@ -5233,7 +5233,7 @@ classtype_has_non_deleted_move_ctor (tree t) - operator, or destructor, returns that function. Otherwise, null. */ - - tree --classtype_has_user_copy_or_dtor (tree t) -+classtype_has_depr_implicit_copy (tree t) - { - if (!CLASSTYPE_LAZY_COPY_CTOR (t)) - for (ovl_iterator iter (CLASSTYPE_CONSTRUCTORS (t)); iter; ++iter) -diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c -index 79abdaebe86..44e6ef379ed 100644 ---- a/gcc/cp/decl2.c -+++ b/gcc/cp/decl2.c -@@ -5275,18 +5275,23 @@ cp_warn_deprecated_use (tree decl, tsubst_flags_t complain) - && DECL_NONSTATIC_MEMBER_FUNCTION_P (decl) - && copy_fn_p (decl)) - { -- auto_diagnostic_group d; -- /* Don't warn about system library classes (c++/86342). */ -- if (!DECL_IN_SYSTEM_HEADER (decl)) -- warned = warning (OPT_Wdeprecated_copy, -- "implicitly-declared %qD is deprecated", decl); -- if (warned) -+ if (warn_deprecated_copy -+ /* Don't warn about system library classes (c++/86342). */ -+ && (!DECL_IN_SYSTEM_HEADER (decl) -+ || global_dc->dc_warn_system_headers)) - { -+ auto_diagnostic_group d; - tree ctx = DECL_CONTEXT (decl); -- tree other = classtype_has_user_copy_or_dtor (ctx); -- inform (DECL_SOURCE_LOCATION (other), -- "because %qT has user-provided %qD", -- ctx, other); -+ tree other = classtype_has_depr_implicit_copy (ctx); -+ int opt = (DECL_DESTRUCTOR_P (other) -+ ? OPT_Wdeprecated_copy_dtor -+ : OPT_Wdeprecated_copy); -+ warned = warning (opt, "implicitly-declared %qD is deprecated", -+ decl); -+ if (warned) -+ inform (DECL_SOURCE_LOCATION (other), -+ "because %qT has user-provided %qD", -+ ctx, other); - } - } - else -diff --git a/gcc/cp/method.c b/gcc/cp/method.c -index 936dad42122..fd023e20053 100644 ---- a/gcc/cp/method.c -+++ b/gcc/cp/method.c -@@ -2380,7 +2380,7 @@ lazily_declare_fn (special_function_kind sfk, tree type) - { - if (classtype_has_move_assign_or_move_ctor_p (type, true)) - DECL_DELETED_FN (fn) = true; -- else if (classtype_has_user_copy_or_dtor (type)) -+ else if (classtype_has_depr_implicit_copy (type)) - /* The implicit definition of a copy constructor as defaulted is - deprecated if the class has a user-declared copy assignment operator - or a user-declared destructor. The implicit definition of a copy -diff --git a/gcc/testsuite/g++.dg/cpp0x/depr-copy1.C b/gcc/testsuite/g++.dg/cpp0x/depr-copy1.C -index d33c6dc667d..bbb81303925 100644 ---- a/gcc/testsuite/g++.dg/cpp0x/depr-copy1.C -+++ b/gcc/testsuite/g++.dg/cpp0x/depr-copy1.C -@@ -6,7 +6,7 @@ - of this International Standard, these implicit definitions could become - deleted (11.4). */ - --// { dg-additional-options -Wdeprecated-copy } -+// { dg-additional-options -Wdeprecated-copy-dtor } - - struct X - { - |