================
@@ -1114,8 +1115,7 @@ void TargetPassConfig::addMachinePasses() {
   // feature takes precedence. This means functions eligible for
   // basic-block-sections optimizations (`=all`, or `=list=` with function
   // included in the list profile) will get that optimization instead.
-  if (TM->Options.EnableMachineFunctionSplitter ||
-      Opts.enable_split_machine_functions)
+  if (SplitFunctions)
----------------
MattPD wrote:

Could we account for libLTO options passed after generator creation? I compiled 
a PGO-profiled `foo` with this sequence: create the generator, add the module, 
preserve `foo`, pass the splitting option to 
`lto_codegen_debug_options_array()`, and call `lto_codegen_compile()`. Before 
this PR, that sequence emits `foo.cold` with `-enable-split-machine-functions`. 
With this PR, libLTO accepts `-function-splitting=all`, but the output lacks 
`foo.cold` and the pass trace omits the splitter.

libLTO copies `TargetOptions` before parsing those options. Calling 
`lto_set_debug_options()` before generator creation restores splitting. Should 
`-function-splitting` also take effect through 
`lto_codegen_debug_options_array()`, or should the migration note require 
`lto_set_debug_options()` before generator creation?

https://github.com/llvm/llvm-project/pull/226575
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to