mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 05:40:09 +00:00
[LLD] [MinGW] Implement the --lto-emit-asm and -plugin-opt=emit-llvm options (#81475)
These were implemented in the COFF linker in3923e61b96
andd12b99a431
. This matches the corresponding options in the ELF linker. (cherry picked from commit d033366bd2189e33343ca93d276b40341dc39770)
This commit is contained in:
parent
5750be5fc5
commit
28be6f670f
@ -448,6 +448,10 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS,
|
||||
add("-lto-cs-profile-generate");
|
||||
if (auto *arg = args.getLastArg(OPT_lto_cs_profile_file))
|
||||
add("-lto-cs-profile-file:" + StringRef(arg->getValue()));
|
||||
if (args.hasArg(OPT_plugin_opt_emit_llvm))
|
||||
add("-lldemit:llvm");
|
||||
if (args.hasArg(OPT_lto_emit_asm))
|
||||
add("-lldemit:asm");
|
||||
|
||||
if (auto *a = args.getLastArg(OPT_thinlto_cache_dir))
|
||||
add("-lldltocache:" + StringRef(a->getValue()));
|
||||
|
@ -158,6 +158,8 @@ def lto_cs_profile_generate: FF<"lto-cs-profile-generate">,
|
||||
HelpText<"Perform context sensitive PGO instrumentation">;
|
||||
def lto_cs_profile_file: JJ<"lto-cs-profile-file=">,
|
||||
HelpText<"Context sensitive profile file path">;
|
||||
def lto_emit_asm: FF<"lto-emit-asm">,
|
||||
HelpText<"Emit assembly code">;
|
||||
|
||||
def thinlto_cache_dir: JJ<"thinlto-cache-dir=">,
|
||||
HelpText<"Path to ThinLTO cached object file directory">;
|
||||
@ -181,6 +183,9 @@ def: J<"plugin-opt=cs-profile-path=">,
|
||||
Alias<lto_cs_profile_file>, HelpText<"Alias for --lto-cs-profile-file">;
|
||||
def plugin_opt_dwo_dir_eq: J<"plugin-opt=dwo_dir=">,
|
||||
HelpText<"Directory to store .dwo files when LTO and debug fission are used">;
|
||||
def plugin_opt_emit_asm: F<"plugin-opt=emit-asm">,
|
||||
Alias<lto_emit_asm>, HelpText<"Alias for --lto-emit-asm">;
|
||||
def plugin_opt_emit_llvm: F<"plugin-opt=emit-llvm">;
|
||||
def: J<"plugin-opt=jobs=">, Alias<thinlto_jobs_eq>, HelpText<"Alias for --thinlto-jobs=">;
|
||||
def plugin_opt_mcpu_eq: J<"plugin-opt=mcpu=">;
|
||||
|
||||
|
@ -409,6 +409,13 @@ LTO_OPTS: -mllvm:-mcpu=x86-64 -opt:lldlto=2 -dwodir:foo -lto-cs-profile-generate
|
||||
RUN: ld.lld -### foo.o -m i386pep --lto-O2 --lto-CGO1 --lto-cs-profile-generate --lto-cs-profile-file=foo 2>&1 | FileCheck -check-prefix=LTO_OPTS2 %s
|
||||
LTO_OPTS2:-opt:lldlto=2 -opt:lldltocgo=1 -lto-cs-profile-generate -lto-cs-profile-file:foo
|
||||
|
||||
RUN: ld.lld -### foo.o -m i386pe -plugin-opt=emit-asm 2>&1 | FileCheck -check-prefix=LTO_EMIT_ASM %s
|
||||
RUN: ld.lld -### foo.o -m i386pe --lto-emit-asm 2>&1 | FileCheck -check-prefix=LTO_EMIT_ASM %s
|
||||
LTO_EMIT_ASM: -lldemit:asm
|
||||
|
||||
RUN: ld.lld -### foo.o -m i386pe -plugin-opt=emit-llvm 2>&1 | FileCheck -check-prefix=LTO_EMIT_LLVM %s
|
||||
LTO_EMIT_LLVM: -lldemit:llvm
|
||||
|
||||
Test GCC specific LTO options that GCC passes unconditionally, that we ignore.
|
||||
|
||||
RUN: ld.lld -### foo.o -m i386pep -plugin /usr/lib/gcc/x86_64-w64-mingw32/10-posix/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-w64-mingw32/10-posix/lto-wrapper -plugin-opt=-fresolution=/tmp/ccM9d4fP.res -plugin-opt=-pass-through=-lmingw32 2> /dev/null
|
||||
|
Loading…
Reference in New Issue
Block a user