[clang] c6a384d - [Sema] Special case -Werror-implicit-function-declaration and reject other -Werror-
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 5 10:25:38 PST 2020
Author: Fangrui Song
Date: 2020-11-05T10:25:30-08:00
New Revision: c6a384df1f8ab85815160297543ab329e02560ef
URL: https://github.com/llvm/llvm-project/commit/c6a384df1f8ab85815160297543ab329e02560ef
DIFF: https://github.com/llvm/llvm-project/commit/c6a384df1f8ab85815160297543ab329e02560ef.diff
LOG: [Sema] Special case -Werror-implicit-function-declaration and reject other -Werror-
This is the only -Werror- form warning option GCC supports (gcc/c-family/c.opt).
Fortunately no other form is used anywhere.
Added:
Modified:
clang/lib/Basic/Warnings.cpp
clang/test/CodeGen/vecshift.c
clang/test/Frontend/warning-options.cpp
clang/test/Modules/diagnose-missing-import.m
clang/test/Preprocessor/if_warning.c
clang/test/Sema/vecshift.c
Removed:
################################################################################
diff --git a/clang/lib/Basic/Warnings.cpp b/clang/lib/Basic/Warnings.cpp
index 2c909d9510d4..cc8c138233ca 100644
--- a/clang/lib/Basic/Warnings.cpp
+++ b/clang/lib/Basic/Warnings.cpp
@@ -130,11 +130,14 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags,
}
// -Werror/-Wno-error is a special case, not controlled by the option
- // table. It also has the "specifier" form of -Werror=foo and -Werror-foo.
+ // table. It also has the "specifier" form of -Werror=foo. GCC supports
+ // the deprecated -Werror-implicit-function-declaration which is used by
+ // a few projects.
if (Opt.startswith("error")) {
StringRef Specifier;
if (Opt.size() > 5) { // Specifier must be present.
- if ((Opt[5] != '=' && Opt[5] != '-') || Opt.size() == 6) {
+ if (Opt[5] != '=' &&
+ Opt.substr(5) != "-implicit-function-declaration") {
if (Report)
Diags.Report(diag::warn_unknown_warning_specifier)
<< "-Werror" << ("-W" + OrigOpt.str());
diff --git a/clang/test/CodeGen/vecshift.c b/clang/test/CodeGen/vecshift.c
index 1fa047cd30b9..f37c5092875f 100644
--- a/clang/test/CodeGen/vecshift.c
+++ b/clang/test/CodeGen/vecshift.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -Wno-error-vec-elem-size -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -Wno-error-vec-elem-size -DEXT -emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -Wno-error=vec-elem-size -emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -Wno-error=vec-elem-size -DEXT -emit-llvm %s -o - | FileCheck %s
#ifdef EXT
typedef __attribute__((__ext_vector_type__(8))) char vector_char8;
diff --git a/clang/test/Frontend/warning-options.cpp b/clang/test/Frontend/warning-options.cpp
index 3c3396becaf8..444733c8b7f3 100644
--- a/clang/test/Frontend/warning-options.cpp
+++ b/clang/test/Frontend/warning-options.cpp
@@ -1,7 +1,8 @@
// RUN: %clang_cc1 -Wmonkey -Wno-monkey -Wno-unused-command-line-arguments \
-// RUN: -Wno-unused-command-line-argument -Wmodule-build -Rmodule-built %s 2>&1 | FileCheck %s
+// RUN: -Wno-unused-command-line-argument -Wmodule-build -Werror-vla -Rmodule-built %s 2>&1 | FileCheck %s
// CHECK: unknown warning option '-Wmonkey'
// CHECK: unknown warning option '-Wno-monkey'
// CHECK: unknown warning option '-Wno-unused-command-line-arguments'; did you mean '-Wno-unused-command-line-argument'?
// CHECK: unknown warning option '-Wmodule-build'; did you mean '-Wmodule-conflict'?
+// CHECK-NEXT: unknown -Werror warning specifier: '-Werror-vla'
// CHECK: unknown remark option '-Rmodule-built'; did you mean '-Rmodule-build'?
diff --git a/clang/test/Modules/diagnose-missing-import.m b/clang/test/Modules/diagnose-missing-import.m
index 2c67e01944a9..f0e557ac09b0 100644
--- a/clang/test/Modules/diagnose-missing-import.m
+++ b/clang/test/Modules/diagnose-missing-import.m
@@ -2,6 +2,9 @@
// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/diagnose-missing-import \
// RUN: -Werror=implicit-function-declaration -fsyntax-only \
// RUN: -fimplicit-module-maps -verify %s
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/diagnose-missing-import \
+// RUN: -Werror-implicit-function-declaration -fsyntax-only \
+// RUN: -fimplicit-module-maps -verify %s
@import NCI;
void foo() {
diff --git a/clang/test/Preprocessor/if_warning.c b/clang/test/Preprocessor/if_warning.c
index 641ec3b1b970..47bc1c6b170a 100644
--- a/clang/test/Preprocessor/if_warning.c
+++ b/clang/test/Preprocessor/if_warning.c
@@ -1,5 +1,4 @@
// RUN: %clang_cc1 %s -Eonly -Werror=undef -verify
-// RUN: %clang_cc1 %s -Eonly -Werror-undef -verify
extern int x;
diff --git a/clang/test/Sema/vecshift.c b/clang/test/Sema/vecshift.c
index 7b6a30ad60dd..7ad19b82093b 100644
--- a/clang/test/Sema/vecshift.c
+++ b/clang/test/Sema/vecshift.c
@@ -1,7 +1,5 @@
// RUN: %clang_cc1 -fsyntax-only -DERR -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-error-vec-elem-size -verify %s
// RUN: %clang_cc1 -fsyntax-only -DEXT -DERR -verify %s
-// RUN: %clang_cc1 -fsyntax-only -DEXT -Wno-error-vec-elem-size -verify %s
#ifdef EXT
typedef __attribute__((__ext_vector_type__(8))) char vector_char8;
More information about the cfe-commits
mailing list