From 929e5c1d4f2c36e233a26b480f1dd172b6d63362 Mon Sep 17 00:00:00 2001
From: liyunfei <liyunfei33@huawei.com>
Date: Thu, 14 Mar 2024 16:04:40 +0800
Subject: [PATCH] add more warning options to -fgcc-compatible

---
 clang/lib/Driver/ToolChains/Clang.cpp | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 793af55a1e5f..f0da323d8adb 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4683,11 +4683,37 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
 #ifdef BUILD_FOR_OPENEULER
   if (Args.hasFlag(options::OPT_fgcc_compatible,
                    options::OPT_fno_gcc_compatible, false)) {
+    // compatibility relevent warnings
     CmdArgs.push_back("-Wno-error=unknown-warning-option");
+    CmdArgs.push_back("-Wno-error=ignored-attributes");
+    // By default, clang reports warnings, but gcc does not.
     CmdArgs.push_back("-Wno-error=unused-parameter");
     CmdArgs.push_back("-Wno-error=unused-function");
     CmdArgs.push_back("-Wno-error=unused-but-set-parameter");
     CmdArgs.push_back("-Wno-error=unused-but-set-variable");
+    CmdArgs.push_back("-Wno-error=deprecated-non-prototype");
+    CmdArgs.push_back("-Wno-error=unsafe-buffer-usage");
+    CmdArgs.push_back("-Wno-error=string-plus-int");
+    CmdArgs.push_back("-Wno-error=language-extension-token");
+    CmdArgs.push_back("-Wno-error=single-bit-bitfield-constant-conversion");
+    CmdArgs.push_back("-Wno-error=gnu-variable-sized-type-not-at-end");
+    CmdArgs.push_back("-Wno-error=header-guard");
+    CmdArgs.push_back("-Wno-error=return-type-c-linkage");
+    // By default, clang reports errors, but gcc reports warnings.
+    // when -Werror is passed don't add -Wno-error=*.
+    if(!D.getDiags().getWarningsAsErrors()) {
+      CmdArgs.push_back("-Wno-error=implicit-function-declaration");
+      CmdArgs.push_back("-Wno-error=incompatible-function-pointer-types");
+      CmdArgs.push_back("-Wno-error=register");
+      CmdArgs.push_back("-Wno-error=int-conversion");
+      CmdArgs.push_back("-Wno-error=implicit-int");
+      CmdArgs.push_back("-Wno-error=enum-constexpr-conversion");
+      CmdArgs.push_back("-Wno-error=return-type");
+    }
+    //other warnings
+    CmdArgs.push_back("-Wno-error=cast-align");
+    CmdArgs.push_back("-Wno-error=enum-conversion");
+    CmdArgs.push_back("-Wno-error=switch");
   }
 #endif
 
-- 
2.42.0.windows.2

