aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre van Houtryve <pierre.vanhoutryve@amd.com>2023-01-09 05:33:38 -0500
committerPierre van Houtryve <pierre.vanhoutryve@amd.com>2023-01-12 02:57:55 -0500
commit6aff41ef37a48461b85c4b5bb143fceec6130a55 (patch)
tree94e5f867e2effe991dbee6d15080f9f77719eb10
parent9b7b5482fa01413a96fe79c42c3e67ee6730cf6d (diff)
downloadllvm-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.cpp4
-rw-r--r--lld/test/ELF/lto/emit-asm.ll8
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
}