[clang] 9087209 - [Driver] Add disabled-by-default -Wuse-ld-path for the deprecation warning for -fuse-ld=/abs/path
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Sat Sep 19 15:51:28 PDT 2020
Author: Fangrui Song
Date: 2020-09-19T15:49:44-07:00
New Revision: 9087209314caafed4b232d4a66287f2d16054ad3
URL: https://github.com/llvm/llvm-project/commit/9087209314caafed4b232d4a66287f2d16054ad3
DIFF: https://github.com/llvm/llvm-project/commit/9087209314caafed4b232d4a66287f2d16054ad3.diff
LOG: [Driver] Add disabled-by-default -Wuse-ld-path for the deprecation warning for -fuse-ld=/abs/path
The warning is currently not under a -W option, so it cannot be suppressed.
This is annoying for the widespread build system Bazel when specifying the path to gold
https://github.com/bazelbuild/bazel/commit/cdd0c3cdba270115940e8ca5ec8104cbcd694671
I have notified them about using --ld-path= forwards
https://github.com/bazelbuild/bazel/pull/8580#issuecomment-694321543
but we have to give some transitional period.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D87837
Added:
Modified:
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/include/clang/Basic/DiagnosticGroups.td
clang/lib/Driver/ToolChain.cpp
clang/test/Driver/fuse-ld.c
clang/test/Misc/warning-flags.c
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index f66d6ae70583..3bf1bb19b7ae 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -463,8 +463,9 @@ def warn_drv_msvc_not_found : Warning<
"try running Clang from a developer command prompt">,
InGroup<DiagGroup<"msvc-not-found">>;
-def warn_drv_use_ld_non_word : Warning<
- "'-fuse-ld=' taking a path is deprecated. Use '--ld-path=' instead">;
+def warn_drv_fuse_ld_path : Warning<
+ "'-fuse-ld=' taking a path is deprecated. Use '--ld-path=' instead">,
+ InGroup<FUseLdPath>, DefaultIgnore;
def warn_drv_fine_grained_bitfield_accesses_ignored : Warning<
"option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored">,
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index a9bd52b8afcd..d826e26bea53 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -869,6 +869,8 @@ def PointerToEnumCast : DiagGroup<"pointer-to-enum-cast",
def PointerToIntCast : DiagGroup<"pointer-to-int-cast",
[PointerToEnumCast, VoidPointerToIntCast]>;
+def FUseLdPath : DiagGroup<"fuse-ld-path">;
+
def Move : DiagGroup<"move", [
PessimizingMove,
RedundantMove,
@@ -887,7 +889,8 @@ def Extra : DiagGroup<"extra", [
UnusedParameter,
NullPointerArithmetic,
EmptyInitStatement,
- StringConcatation
+ StringConcatation,
+ FUseLdPath,
]>;
def Most : DiagGroup<"most", [
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index a6c83689235f..0831791c8d06 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -581,7 +581,7 @@ std::string ToolChain::GetLinkerPath() const {
// to a relative path is surprising. This is more complex due to priorities
// among -B, COMPILER_PATH and PATH. --ld-path= should be used instead.
if (UseLinker.find('/') != StringRef::npos)
- getDriver().Diag(diag::warn_drv_use_ld_non_word);
+ getDriver().Diag(diag::warn_drv_fuse_ld_path);
if (llvm::sys::path::is_absolute(UseLinker)) {
// If we're passed what looks like an absolute path, don't attempt to
diff --git a/clang/test/Driver/fuse-ld.c b/clang/test/Driver/fuse-ld.c
index 678913dd84c3..338d73e530e5 100644
--- a/clang/test/Driver/fuse-ld.c
+++ b/clang/test/Driver/fuse-ld.c
@@ -1,10 +1,18 @@
-// RUN: %clang %s -### \
-// RUN: -fuse-ld=/usr/local/bin/or1k-linux-ld 2>&1 \
-// RUN: -target x86_64-unknown-linux \
-// RUN: | FileCheck %s --check-prefix=CHECK-ABSOLUTE-LD
+/// The absolute path warning is enabled by -Wfuse-ld-path and -Wextra.
+// RUN: %clang %s -### -target x86_64-unknown-linux -Wfuse-ld-path \
+// RUN: -fuse-ld=/usr/local/bin/or1k-linux-ld 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-ABSOLUTE-LD
// CHECK-ABSOLUTE-LD: warning: '-fuse-ld=' taking a path is deprecated. Use '--ld-path=' instead
// CHECK-ABSOLUTE-LD: /usr/local/bin/or1k-linux-ld
+// RUN: %clang %s -### -target x86_64-unknown-linux -Wextra \
+// RUN: -fuse-ld=/usr/local/bin/or1k-linux-ld 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-ABSOLUTE-LD
+
+// RUN: %clang %s -### -target x86_64-unknown-linux \
+// RUN: -fuse-ld=/usr/local/bin/or1k-linux-ld 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-NO-WARN
+// CHECK-NO-WARN-NOT: warning:
// RUN: %clang %s -### \
// RUN: -target x86_64-unknown-freebsd 2>&1 \
diff --git a/clang/test/Misc/warning-flags.c b/clang/test/Misc/warning-flags.c
index 168f2a3551ba..e4f9069b88c8 100644
--- a/clang/test/Misc/warning-flags.c
+++ b/clang/test/Misc/warning-flags.c
@@ -18,7 +18,7 @@ This test serves two purposes:
The list of warnings below should NEVER grow. It should gradually shrink to 0.
-CHECK: Warnings without flags (69):
+CHECK: Warnings without flags (68):
CHECK-NEXT: ext_expected_semi_decl_list
CHECK-NEXT: ext_explicit_specialization_storage_class
@@ -47,7 +47,6 @@ CHECK-NEXT: warn_double_const_requires_fp64
CHECK-NEXT: warn_drv_assuming_mfloat_abi_is
CHECK-NEXT: warn_drv_clang_unsupported
CHECK-NEXT: warn_drv_pch_not_first_include
-CHECK-NEXT: warn_drv_use_ld_non_word
CHECK-NEXT: warn_dup_category_def
CHECK-NEXT: warn_enum_value_overflow
CHECK-NEXT: warn_expected_qualified_after_typename
More information about the cfe-commits
mailing list