[llvm] [LTO] Reset DiscardValueNames in optimize(). (PR #78705)

via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 19 04:20:44 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lto

Author: Florian Hahn (fhahn)

<details>
<summary>Changes</summary>

libLTO parses options late, so at the moment the option is ignored. To fix that, 
re-set it in optimize(), as at this point the options have been parsed. When 
LTOCodeGenerator's constructor executes, the options haven't been passed 
by the linker to libLTO yet.

Note that we keep the value name of `%add = add..` because when the module
 is imported, DiscardValueNames is still set to false (the default when building 
with assertions).

I tried to improve this in libLTO, but I am not sure if there's a suitable callback when all options have been set.

---
Full diff: https://github.com/llvm/llvm-project/pull/78705.diff


2 Files Affected:

- (modified) llvm/lib/LTO/LTOCodeGenerator.cpp (+3) 
- (modified) llvm/test/tools/lto/discard-value-names.ll (+1-2) 


``````````diff
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 52d8fff14be9cec..727ab7b0db41a6d 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -582,6 +582,9 @@ bool LTOCodeGenerator::optimize() {
   if (!this->determineTarget())
     return false;
 
+  // libLTO parses options late, so re-set them here.
+  Context.setDiscardValueNames(LTODiscardValueNames);
+
   auto DiagFileOrErr = lto::setupLLVMOptimizationRemarks(
       Context, RemarksFilename, RemarksPasses, RemarksFormat,
       RemarksWithHotness, RemarksHotnessThreshold);
diff --git a/llvm/test/tools/lto/discard-value-names.ll b/llvm/test/tools/lto/discard-value-names.ll
index 723b0701ae22cee..04d25eaf6067c54 100644
--- a/llvm/test/tools/lto/discard-value-names.ll
+++ b/llvm/test/tools/lto/discard-value-names.ll
@@ -7,11 +7,10 @@
 
 ; The test requires asserts, as it depends on the default value for
 ; -lto-discard-value-names at the moment.
-; FIXME: -lto-discard-value-names is ignored at the moment.
 
 ; REQUIRES: asserts
 
-; DISCARD: %cmp.i = icmp
+; DISCARD: %{{[0-9]+}} = icmp
 ; DISCARD: %add = add i32
 
 ; KEEP: %cmp.i = icmp

``````````

</details>


https://github.com/llvm/llvm-project/pull/78705


More information about the llvm-commits mailing list