diff options
author | Sid Manning <sidneym@quicinc.com> | 2019-12-02 14:10:03 -0600 |
---|---|---|
committer | Sid Manning <sidneym@quicinc.com> | 2019-12-20 14:18:10 -0600 |
commit | d567b0ba841d4b6f4b0d906da350a3bb2b2f769f (patch) | |
tree | d1583b1281e3bebba8040670cd5d3cbc949248e0 | |
parent | 4024d49edc1598a6f8017df541147b38bf1e2818 (diff) | |
download | bcm5719-llvm-d567b0ba841d4b6f4b0d906da350a3bb2b2f769f.tar.gz bcm5719-llvm-d567b0ba841d4b6f4b0d906da350a3bb2b2f769f.zip |
Avoid unsupported LLD options
Differential Revision: https://reviews.llvm.org/D70919
-rw-r--r-- | clang/lib/Driver/ToolChains/Hexagon.cpp | 11 | ||||
-rwxr-xr-x | clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld | 0 | ||||
-rw-r--r-- | clang/test/Driver/hexagon-toolchain-elf.c | 22 |
3 files changed, 30 insertions, 3 deletions
diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index 4a735a2a1d5..e4d9ea8a70f 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -209,7 +209,11 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA, bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseG0 = false; + const char *Exec = Args.MakeArgString(HTC.GetLinkerPath()); + bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") || + llvm::sys::path::stem(Exec).equals_lower("ld.lld")); bool UseShared = IsShared && !IsStatic; + StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); //---------------------------------------------------------------------------- // Silence warnings for various options @@ -232,9 +236,10 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA, for (const auto &Opt : HTC.ExtraOpts) CmdArgs.push_back(Opt.c_str()); - CmdArgs.push_back("-march=hexagon"); - StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); - CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + if (!UseLLD) { + CmdArgs.push_back("-march=hexagon"); + CmdArgs.push_back(Args.MakeArgString("-mcpu=hexagon" + CpuVer)); + } if (IsShared) { CmdArgs.push_back("-shared"); diff --git a/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld new file mode 100755 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c index 661e758d931..0339619e1c1 100644 --- a/clang/test/Driver/hexagon-toolchain-elf.c +++ b/clang/test/Driver/hexagon-toolchain-elf.c @@ -536,3 +536,25 @@ // RUN: | FileCheck -check-prefix=CHECK080 %s // CHECK080: "-cc1" // CHECK080: "-Wreturn-type" + +// ----------------------------------------------------------------------------- +// Default, not passing -fuse-ld +// ----------------------------------------------------------------------------- +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK081 %s +// CHECK081: "-march=hexagon" +// CHECK081: "-mcpu=hexagonv60" +// ----------------------------------------------------------------------------- +// Passing -fuse-ld=lld +// ----------------------------------------------------------------------------- +// RUN: %clang -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK082 %s +// CHECK082-NOT: -march= +// CHECK082-NOT: -mcpu= |