aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-12-14 17:59:05 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-12-14 17:59:05 +0100
commit54d62f5148febdf714fa374a10a72c73850ed6bb (patch)
tree107d66ef4eb8cce1efee494ba91a5442b067d48a /gcc
parentd84ffc0a56d84a02929fa67d2edb52d4b81fab37 (diff)
downloadgcc-54d62f5148febdf714fa374a10a72c73850ed6bb.zip
gcc-54d62f5148febdf714fa374a10a72c73850ed6bb.tar.gz
gcc-54d62f5148febdf714fa374a10a72c73850ed6bb.tar.bz2
re PR c/68833 (-Werror=format issues an error now)
PR c/68833 * common.opt (Wmissing-noreturn): Add Warning option. * opts-common.c (control_warning_option): If opt is alias_target with alias_arg, set arg to it. * c.opt (Wmissing-format-attribute, Wnormalized): Add Warning option. * c-c++-common/pr68833-1.c: New test. * c-c++-common/pr68833-2.c: New test. From-SVN: r231624
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c.opt4
-rw-r--r--gcc/common.opt2
-rw-r--r--gcc/opts-common.c8
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/c-c++-common/pr68833-1.c22
-rw-r--r--gcc/testsuite/c-c++-common/pr68833-2.c16
-rw-r--r--gcc/testsuite/c-c++-common/pr68833-3.c7
9 files changed, 73 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14efd7a..31c79d8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/68833
+ * common.opt (Wmissing-noreturn): Add Warning option.
+ * opts-common.c (control_warning_option): If opt is
+ alias_target with alias_arg, set arg to it.
+
2015-12-14 Segher Boessenkool <segher@kernel.crashing.org>
PR target/68865
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 0f557c7..db9a279 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/68833
+ * c.opt (Wmissing-format-attribute, Wnormalized): Add Warning option.
+
2014-12-12 Tobias Burnus <burnus@net-b.de>
PR fortran/68815
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 5867de5..70dc916 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -627,7 +627,7 @@ C++ ObjC++ Var(warn_templates) Warning
Warn on primary template declaration.
Wmissing-format-attribute
-C ObjC C++ ObjC++ Alias(Wsuggest-attribute=format)
+C ObjC C++ ObjC++ Warning Alias(Wsuggest-attribute=format)
;
Wmissing-include-dirs
@@ -678,7 +678,7 @@ C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
;
Wnormalized
-C ObjC C++ ObjC++ Alias(Wnormalized=,nfc,none)
+C ObjC C++ ObjC++ Warning Alias(Wnormalized=,nfc,none)
;
Wnormalized=
diff --git a/gcc/common.opt b/gcc/common.opt
index b1591d5..6264bc0 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -612,7 +612,7 @@ Common Var(warn_unsafe_loop_optimizations) Warning
Warn if the loop cannot be optimized due to nontrivial assumptions.
Wmissing-noreturn
-Common Alias(Wsuggest-attribute=noreturn)
+Common Warning Alias(Wsuggest-attribute=noreturn)
Wodr
Common Var(warn_odr_violations) Init(1) Warning
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 507358a..55b6315 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -1361,7 +1361,13 @@ control_warning_option (unsigned int opt_index, int kind, const char *arg,
diagnostic_context *dc)
{
if (cl_options[opt_index].alias_target != N_OPTS)
- opt_index = cl_options[opt_index].alias_target;
+ {
+ gcc_assert (!cl_options[opt_index].cl_separate_alias
+ && !cl_options[opt_index].cl_negative_alias);
+ if (cl_options[opt_index].alias_arg)
+ arg = cl_options[opt_index].alias_arg;
+ opt_index = cl_options[opt_index].alias_target;
+ }
if (opt_index == OPT_SPECIAL_ignore)
return;
if (dc)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 45db39a..2bbd9dc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/68833
+ * c-c++-common/pr68833-1.c: New test.
+ * c-c++-common/pr68833-2.c: New test.
+
2015-12-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/68852
diff --git a/gcc/testsuite/c-c++-common/pr68833-1.c b/gcc/testsuite/c-c++-common/pr68833-1.c
new file mode 100644
index 0000000..e0601b3
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr68833-1.c
@@ -0,0 +1,22 @@
+/* PR c/68833 */
+/* { dg-do compile } */
+/* { dg-options "-Werror=larger-than-65536 -Werror=format -Werror=missing-noreturn" } */
+
+int a[131072]; /* { dg-error "size of 'a' is \[1-9]\[0-9]* bytes" } */
+int b[1024]; /* { dg-bogus "size of 'b' is \[1-9]\[0-9]* bytes" } */
+
+void
+f1 (const char *fmt)
+{
+ __builtin_printf ("%d\n", 1.2); /* { dg-error "expects argument of type" } */
+ __builtin_printf (fmt, 1.2); /* { dg-bogus "format not a string literal, argument types not checked" } */
+}
+
+extern void f2 (void);
+void
+f2 (void) /* { dg-error "candidate for attribute 'noreturn'" "detect noreturn candidate" } */
+{
+ __builtin_exit (0);
+}
+
+/* { dg-prune-output "treated as errors" } */
diff --git a/gcc/testsuite/c-c++-common/pr68833-2.c b/gcc/testsuite/c-c++-common/pr68833-2.c
new file mode 100644
index 0000000..c991b7a
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr68833-2.c
@@ -0,0 +1,16 @@
+/* PR c/68833 */
+/* { dg-do compile } */
+/* { dg-options "-Werror=missing-format-attribute" } */
+
+#include <stdarg.h>
+
+void
+foo (const char *fmt, ...)
+{
+ va_list ap;
+ va_start (ap, fmt);
+ __builtin_vprintf (fmt, ap); /* { dg-error "candidate" "printf attribute warning" } */
+ va_end (ap);
+}
+
+/* { dg-prune-output "treated as errors" } */
diff --git a/gcc/testsuite/c-c++-common/pr68833-3.c b/gcc/testsuite/c-c++-common/pr68833-3.c
new file mode 100644
index 0000000..c99a2c6
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr68833-3.c
@@ -0,0 +1,7 @@
+/* PR c/68833 */
+/* { dg-do preprocess } */
+/* { dg-options "-Werror=normalized" } */
+
+\u0F43 // { dg-error "`.U00000f43' is not in NFC .-Werror=normalized=." }
+
+/* { dg-prune-output "treated as errors" } */