[lld] 6aff41e - [ELF] Emit Verbose Asm when using --lto-emit-asm

Pierre van Houtryve via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 11 23:58:00 PST 2023


Author: Pierre van Houtryve
Date: 2023-01-12T02:57:55-05:00
New Revision: 6aff41ef37a48461b85c4b5bb143fceec6130a55

URL: https://github.com/llvm/llvm-project/commit/6aff41ef37a48461b85c4b5bb143fceec6130a55
DIFF: https://github.com/llvm/llvm-project/commit/6aff41ef37a48461b85c4b5bb143fceec6130a55.diff

LOG: [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

Added: 
    

Modified: 
    lld/ELF/LTO.cpp
    lld/test/ELF/lto/emit-asm.ll

Removed: 
    


################################################################################
diff  --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp
index 787329388a2c6..b80f1f48f768a 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 d0719411a5bad..3f635b8dbe7f7 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
 }


        


More information about the llvm-commits mailing list