[lld] r265206 - PR27104: Add -mllvm option

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 1 19:41:02 PDT 2016


On Fri, Apr 1, 2016 at 6:39 PM, Sean Silva via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: silvas
> Date: Fri Apr  1 20:39:56 2016
> New Revision: 265206
>
> URL: http://llvm.org/viewvc/llvm-project?rev=265206&view=rev
> Log:
> PR27104: Add -mllvm option
>
> The argv[0] is based on the analogous thing in clang.
>
> Modified:
>     lld/trunk/ELF/Config.h
>     lld/trunk/ELF/Driver.cpp
>     lld/trunk/ELF/LTO.cpp
>     lld/trunk/ELF/Options.td
>     lld/trunk/test/ELF/lto/ltopasses-basic.ll
>
> Modified: lld/trunk/ELF/Config.h
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=265206&r1=265205&r2=265206&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Config.h (original)
> +++ lld/trunk/ELF/Config.h Fri Apr  1 20:39:56 2016
> @@ -91,6 +91,7 @@ struct Configuration {
>    uint16_t EMachine = llvm::ELF::EM_NONE;
>    uint64_t EntryAddr = -1;
>    unsigned LtoO;
> +  std::vector<const char *> MLlvm = {"lld (LLVM option parsing)"};
>    unsigned Optimize;
>  };
>
>
> Modified: lld/trunk/ELF/Driver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=265206&r1=265205&r2=265206&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Driver.cpp (original)
> +++ lld/trunk/ELF/Driver.cpp Fri Apr  1 20:39:56 2016
> @@ -308,6 +308,9 @@ void LinkerDriver::readConfigs(opt::Inpu
>
>    for (auto *Arg : Args.filtered(OPT_undefined))
>      Config->Undefined.push_back(Arg->getValue());
> +
> +  for (auto *Arg : Args.filtered(OPT_mllvm))
> +    Config->MLlvm.push_back(Arg->getValue());
>

Do you need to store -mllvm options to Config? It seems that you can
directly call cl::ParseCommandLineOptions here without storing it to Config.


>  }
>
>  void LinkerDriver::createFiles(opt::InputArgList &Args) {
>
> Modified: lld/trunk/ELF/LTO.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.cpp?rev=265206&r1=265205&r2=265206&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/LTO.cpp (original)
> +++ lld/trunk/ELF/LTO.cpp Fri Apr  1 20:39:56 2016
> @@ -143,6 +143,8 @@ std::unique_ptr<InputFile> BitcodeCompil
>      internalize(*GV);
>    }
>
> +  cl::ParseCommandLineOptions(Config->MLlvm.size(), Config->MLlvm.data());
> +
>    if (Config->SaveTemps)
>      saveBCFile(Combined, ".lto.bc");
>
>
> Modified: lld/trunk/ELF/Options.td
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=265206&r1=265205&r2=265206&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Options.td (original)
> +++ lld/trunk/ELF/Options.td Fri Apr  1 20:39:56 2016
> @@ -215,5 +215,6 @@ def G : Separate<["-"], "G">;
>  // Aliases for ignored options
>  def alias_version_script_version_script : Joined<["--"],
> "version-script=">, Alias<version_script>;
>
> -// Debugging options
> +// Debugging/developer options
>  def save_temps : Flag<["-"], "save-temps">;
> +def mllvm : Separate<["-"], "mllvm">;
>
> Modified: lld/trunk/test/ELF/lto/ltopasses-basic.ll
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/ltopasses-basic.ll?rev=265206&r1=265205&r2=265206&view=diff
>
> ==============================================================================
> --- lld/trunk/test/ELF/lto/ltopasses-basic.ll (original)
> +++ lld/trunk/test/ELF/lto/ltopasses-basic.ll Fri Apr  1 20:39:56 2016
> @@ -1,7 +1,7 @@
>  ; REQUIRES: x86
>  ; RUN: rm -f %t.so.lto.bc %t.so.lto.opt.bc %t.so.lto.o
>  ; RUN: llvm-as %s -o %t.o
> -; RUN: ld.lld -m elf_x86_64 %t.o -o %t.so -save-temps -shared
> +; RUN: ld.lld -m elf_x86_64 %t.o -o %t.so -save-temps -mllvm
> -debug-pass=Arguments -shared 2>&1 | FileCheck %s --check-prefix=MLLVM
>  ; RUN: llvm-dis %t.so.lto.opt.bc -o - | FileCheck %s
>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> @@ -14,3 +14,5 @@ define void @ctor() {
>
>  ; `@ctor` doesn't do anything and so the optimizer should kill it,
> leaving no ctors
>  ; CHECK: @llvm.global_ctors = appending global [0 x { i32, void ()*, i8*
> }] zeroinitializer
> +
> +; MLLVM: Pass Arguments:
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160401/ea0a4097/attachment.html>


More information about the llvm-commits mailing list