re PR c++/69884 (warning: ignoring attributes on template argument)
authorMarek Polacek <polacek@redhat.com>
Wed, 23 Mar 2016 17:51:56 +0000 (17:51 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Wed, 23 Mar 2016 17:51:56 +0000 (17:51 +0000)
PR c++/69884
* c.opt (Wignored-attributes): New option.

* pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.

* doc/invoke.texi: Document -Wignored-attributes.

* g++.dg/warn/Wignored-attributes-1.C: New test.
* g++.dg/warn/Wignored-attributes-2.C: New test.

From-SVN: r234433

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c.opt
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C [new file with mode: 0644]

index a100ff1d200e2ad914816f70e945328b808771ae..1b102c5e5d8e55cb943a6dd9d6cf7190a105f8e5 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-23  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/69884
+       * doc/invoke.texi: Document -Wignored-attributes.
+
 2016-03-23  Bin Cheng  <bin.cheng@arm.com>
 
        PR tree-optimization/69042
index 9944759d90cbfe63652395d9fa7c345d55a9ee9e..c1188d7e5c0c990a3165c673e69ad7f30e3d4f19 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-23  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/69884
+       * c.opt (Wignored-attributes): New option.
+
 2016-03-22  David Malcolm  <dmalcolm@redhat.com>
 
        PR c/69993
index 7c5f6c7b5ccbcbc42cde8739cc7011b3fed66fff..4f86876c533db05c02e23535384a70b990322f40 100644 (file)
@@ -482,6 +482,10 @@ Wignored-qualifiers
 C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
 Warn whenever type qualifiers are ignored.
 
+Wignored-attributes
+C C++ Var(warn_ignored_attributes) Init(1) Warning
+Warn whenever attributes are ignored.
+
 Wincompatible-pointer-types
 C ObjC Var(warn_incompatible_pointer_types) Init(1) Warning
 Warn when there is a conversion between pointers that have incompatible types.
index 6557f9096352284e9f2c96e2386216aaa5a46af7..d36168957ca6e62419b676fc05882a560c0fd38b 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-23  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/69884
+       * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
+
 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
 
        * call.c (build_conditional_expr_1): Always use original
index 45cd1eaaf4fd2a05ef4a189d645ce6d7f5b94239..68374389f3beb184932edd4c1de2ddfbd09aa79f 100644 (file)
@@ -6950,7 +6950,8 @@ canonicalize_type_argument (tree arg, tsubst_flags_t complain)
   tree canon = strip_typedefs (arg, &removed_attributes);
   if (removed_attributes
       && (complain & tf_warning))
-    warning (0, "ignoring attributes on template argument %qT", arg);
+    warning (OPT_Wignored_attributes,
+            "ignoring attributes on template argument %qT", arg);
   return canon;
 }
 
index 99ac11b771408c6751c1ddbdabdb4eeb9ec0306a..9e54bb75737faa240a6c353214760c7a3efd1529 100644 (file)
@@ -267,7 +267,7 @@ Objective-C and Objective-C++ Dialects}.
 -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol
 -Wformat-security  -Wformat-signedness  -Wformat-y2k -Wframe-address @gol
 -Wframe-larger-than=@var{len} -Wno-free-nonheap-object -Wjump-misses-init @gol
--Wignored-qualifiers  -Wincompatible-pointer-types @gol
+-Wignored-qualifiers  -Wignored-attributes  -Wincompatible-pointer-types @gol
 -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int @gol
 -Winit-self  -Winline  -Wno-int-conversion @gol
 -Wno-int-to-pointer-cast -Winvalid-memory-model -Wno-invalid-offsetof @gol
@@ -3886,6 +3886,14 @@ even without this option.
 
 This warning is also enabled by @option{-Wextra}.
 
+@item -Wignored-attributes @r{(C and C++ only)}
+@opindex Wignored-attributes
+@opindex Wno-ignored-attributes
+Warn when an attribute is ignored.  This is different from the
+@option{-Wattributes} option in that it warns whenever the compiler decides
+to drop an attribute, not that the attribute is either unknown, used in a
+wrong place, etc.  This warning is enabled by default.
+
 @item -Wmain
 @opindex Wmain
 @opindex Wno-main
index 7ce1d289e82461a1123cc762c865614ff7ad925c..93b731266ab57c0870c4cf605118210874cad6cd 100644 (file)
@@ -1,3 +1,9 @@
+2016-03-23  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/69884
+       * g++.dg/warn/Wignored-attributes-1.C: New test.
+       * g++.dg/warn/Wignored-attributes-2.C: New test.
+
 2016-03-23  Tom de Vries  <tom@codesourcery.com>
 
        * c-c++-common/goacc/kernels-default.c (foo): Add missing
diff --git a/gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C b/gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
new file mode 100644 (file)
index 0000000..46ccc4a
--- /dev/null
@@ -0,0 +1,6 @@
+// PR c++/69884
+// { dg-do compile }
+
+typedef float __m128 __attribute__((__vector_size__(16), __may_alias__));
+template <typename> struct A;
+template <> struct A<__m128>; // { dg-warning "ignoring attributes on template argument" }
diff --git a/gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C b/gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
new file mode 100644 (file)
index 0000000..6431607
--- /dev/null
@@ -0,0 +1,7 @@
+// PR c++/69884
+// { dg-do compile }
+// { dg-options "-Wno-ignored-attributes" }
+
+typedef float __m128 __attribute__((__vector_size__(16), __may_alias__));
+template <typename> struct A;
+template <> struct A<__m128>;