Loading clang/lib/Driver/ToolChains/CommonArgs.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -598,7 +598,8 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath()); const Driver &D = ToolChain.getDriver(); if (llvm::sys::path::filename(Linker) != "ld.lld" && llvm::sys::path::stem(Linker) != "ld.lld") { llvm::sys::path::stem(Linker) != "ld.lld" && !ToolChain.getTriple().isOSOpenBSD()) { // Tell the linker to load the plugin. This has to come before // AddLinkerInputs as gold requires -plugin and AIX ld requires -bplugin to // come before any -plugin-opt/-bplugin_opt that -Wl might forward. Loading clang/lib/Driver/ToolChains/Haiku.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,20 @@ void haiku::Linker::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_s, options::OPT_t, options::OPT_r}); ToolChain.AddFilePathLibArgs(Args, CmdArgs); if (D.isUsingLTO()) { assert(!Inputs.empty() && "Must have at least one input."); // Find the first filename InputInfo object. auto Input = llvm::find_if( Inputs, [](const InputInfo &II) -> bool { return II.isFilename(); }); if (Input == Inputs.end()) // For a very rare case, all of the inputs to the linker are // InputArg. If that happens, just use the first InputInfo. Input = Inputs.begin(); addLTOOptions(ToolChain, Args, CmdArgs, Output, *Input, D.getLTOMode() == LTOK_Thin); } addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); Loading clang/lib/Driver/ToolChains/OpenBSD.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,20 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s, options::OPT_t, options::OPT_r}); if (D.isUsingLTO()) { assert(!Inputs.empty() && "Must have at least one input."); // Find the first filename InputInfo object. auto Input = llvm::find_if( Inputs, [](const InputInfo &II) -> bool { return II.isFilename(); }); if (Input == Inputs.end()) // For a very rare case, all of the inputs to the linker are // InputArg. If that happens, just use the first InputInfo. Input = Inputs.begin(); addLTOOptions(ToolChain, Args, CmdArgs, Output, *Input, D.getLTOMode() == LTOK_Thin); } bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); Loading clang/test/Driver/emulated-tls.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,8 @@ // RUN: | FileCheck %s --check-prefix=LTO_EMUTLS // RUN: %clang -### -flto --target=riscv64-linux-android10000 -fno-emulated-tls %s 2>&1 \ // RUN: | FileCheck %s --check-prefix=LTO_NOEMUTLS // RUN: %clang -### -flto --target=amd64-unknown-openbsd %s 2>&1 \ // RUN: | FileCheck %s --check-prefix=LTO_EMUTLS // Default without -f[no-]emulated-tls, will be decided by the target triple. // DEFAULT-NOT: "-cc1" {{.*}}"-femulated-tls" Loading clang/test/Driver/haiku.c +5 −0 Original line number Diff line number Diff line Loading @@ -75,3 +75,8 @@ // RUN: %clang -### %s 2>&1 --target=arm-unknown-haiku \ // RUN: | FileCheck --check-prefix=CHECK-ARM-CPU %s // CHECK-ARM-CPU: "-target-cpu" "arm1176jzf-s" // Check passing LTO flags to the linker // RUN: %clang --target=x86_64-unknown-haiku -flto -### %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-LTO-FLAGS %s // CHECK-LTO-FLAGS: "-plugin-opt=mcpu=x86-64" Loading
clang/lib/Driver/ToolChains/CommonArgs.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -598,7 +598,8 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath()); const Driver &D = ToolChain.getDriver(); if (llvm::sys::path::filename(Linker) != "ld.lld" && llvm::sys::path::stem(Linker) != "ld.lld") { llvm::sys::path::stem(Linker) != "ld.lld" && !ToolChain.getTriple().isOSOpenBSD()) { // Tell the linker to load the plugin. This has to come before // AddLinkerInputs as gold requires -plugin and AIX ld requires -bplugin to // come before any -plugin-opt/-bplugin_opt that -Wl might forward. Loading
clang/lib/Driver/ToolChains/Haiku.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,20 @@ void haiku::Linker::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_s, options::OPT_t, options::OPT_r}); ToolChain.AddFilePathLibArgs(Args, CmdArgs); if (D.isUsingLTO()) { assert(!Inputs.empty() && "Must have at least one input."); // Find the first filename InputInfo object. auto Input = llvm::find_if( Inputs, [](const InputInfo &II) -> bool { return II.isFilename(); }); if (Input == Inputs.end()) // For a very rare case, all of the inputs to the linker are // InputArg. If that happens, just use the first InputInfo. Input = Inputs.begin(); addLTOOptions(ToolChain, Args, CmdArgs, Output, *Input, D.getLTOMode() == LTOK_Thin); } addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); Loading
clang/lib/Driver/ToolChains/OpenBSD.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,20 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s, options::OPT_t, options::OPT_r}); if (D.isUsingLTO()) { assert(!Inputs.empty() && "Must have at least one input."); // Find the first filename InputInfo object. auto Input = llvm::find_if( Inputs, [](const InputInfo &II) -> bool { return II.isFilename(); }); if (Input == Inputs.end()) // For a very rare case, all of the inputs to the linker are // InputArg. If that happens, just use the first InputInfo. Input = Inputs.begin(); addLTOOptions(ToolChain, Args, CmdArgs, Output, *Input, D.getLTOMode() == LTOK_Thin); } bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); Loading
clang/test/Driver/emulated-tls.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,8 @@ // RUN: | FileCheck %s --check-prefix=LTO_EMUTLS // RUN: %clang -### -flto --target=riscv64-linux-android10000 -fno-emulated-tls %s 2>&1 \ // RUN: | FileCheck %s --check-prefix=LTO_NOEMUTLS // RUN: %clang -### -flto --target=amd64-unknown-openbsd %s 2>&1 \ // RUN: | FileCheck %s --check-prefix=LTO_EMUTLS // Default without -f[no-]emulated-tls, will be decided by the target triple. // DEFAULT-NOT: "-cc1" {{.*}}"-femulated-tls" Loading
clang/test/Driver/haiku.c +5 −0 Original line number Diff line number Diff line Loading @@ -75,3 +75,8 @@ // RUN: %clang -### %s 2>&1 --target=arm-unknown-haiku \ // RUN: | FileCheck --check-prefix=CHECK-ARM-CPU %s // CHECK-ARM-CPU: "-target-cpu" "arm1176jzf-s" // Check passing LTO flags to the linker // RUN: %clang --target=x86_64-unknown-haiku -flto -### %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-LTO-FLAGS %s // CHECK-LTO-FLAGS: "-plugin-opt=mcpu=x86-64"