diff options
| author | Pierre van Houtryve <pierre.vanhoutryve@amd.com> | 2023-01-09 05:33:38 -0500 |
|---|---|---|
| committer | Pierre van Houtryve <pierre.vanhoutryve@amd.com> | 2023-01-12 02:57:55 -0500 |
| commit | 6aff41ef37a48461b85c4b5bb143fceec6130a55 (patch) | |
| tree | 94e5f867e2effe991dbee6d15080f9f77719eb10 | |
| parent | 9b7b5482fa01413a96fe79c42c3e67ee6730cf6d (diff) | |
| download | llvm-6aff41ef37a48461b85c4b5bb143fceec6130a55.zip llvm-6aff41ef37a48461b85c4b5bb143fceec6130a55.tar.gz llvm-6aff41ef37a48461b85c4b5bb143fceec6130a55.tar.bz2 | |
[ELF] Emit Verbose Asm when using --lto-emit-asm
D138560 was abandonned as the use case can already be covered by `-Xoffload-linker --lto-emit-asm`.
However the output from `--lto-emit-asm` doesn't have
comments like the Clang `-S` output.
This patch adds verbose assembly output to LLD ELF LTO
so that the resulting assembly file more closely matches Clang's.
Having comments is especially important on targets such as AMDGPU because
they contain additional information about the kernel(s) being compiled.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D141268
| -rw-r--r-- | lld/ELF/LTO.cpp | 4 | ||||
| -rw-r--r-- | lld/test/ELF/lto/emit-asm.ll | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp index 7873293..b80f1f4 100644 --- a/lld/ELF/LTO.cpp +++ b/lld/ELF/LTO.cpp @@ -176,8 +176,10 @@ static lto::Config createConfig() { }; } - if (config->ltoEmitAsm) + if (config->ltoEmitAsm) { c.CGFileType = CGFT_AssemblyFile; + c.Options.MCOptions.AsmVerbose = true; + } if (!config->saveTempsArgs.empty()) checkError(c.addSaveTemps(config->outputFile.str() + ".", diff --git a/lld/test/ELF/lto/emit-asm.ll b/lld/test/ELF/lto/emit-asm.ll index d071941..3f635b8 100644 --- a/lld/test/ELF/lto/emit-asm.ll +++ b/lld/test/ELF/lto/emit-asm.ll @@ -11,14 +11,18 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" +;; Note: we also check for the presence of comments; --lto-emit-asm output should be verbose. + +; CHECK-DAG: # -- Begin function f1 ; CHECK-DAG: f1: -; OPT-DAG: define void @f1() +; OPT: define void @f1() define void @f1() { ret void } +; CHECK-DAG: # -- Begin function f2 ; CHECK-DAG: f2: -; OPT-DAG: define void @f2() +; OPT: define void @f2() define void @f2() { ret void } |
