[all-commits] [llvm/llvm-project] 82a0bb: [SampleFDO] Place the discriminator flag variable ...

xur-llvm via All-commits all-commits at lists.llvm.org
Tue Jun 15 21:52:44 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 82a0bb1afc2924a2457af574a83317a47659388a
      https://github.com/llvm/llvm-project/commit/82a0bb1afc2924a2457af574a83317a47659388a
  Author: Rong Xu <xur at google.com>
  Date:   2021-06-15 (Tue, 15 Jun 2021)

  Changed paths:
    M llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseUtil.h
    M llvm/lib/CodeGen/MIRFSDiscriminator.cpp
    M llvm/lib/Transforms/Utils/AddDiscriminators.cpp
    M llvm/lib/Transforms/Utils/SampleProfileLoaderBaseUtil.cpp

  Log Message:
  -----------
  [SampleFDO] Place the discriminator flag variable into the used list.

We create flag variable "__llvm_fs_discriminator__" in the binary
to indicate that FSAFDO hierarchical discriminators are used.

This variable might be GC'ed by the linker since it is not explicitly
reference. I initially added the var to the use list in pass
MIRFSDiscriminator but it did not work. It turned out the used global
list is collected in lowering (before MIR pass) and then emitted in
the end of pass pipeline.

Here I add the variable to the use list in IR level's AddDiscriminators
pass. The machine level code is still keep in the case IR's
AddDiscriminators is not invoked. If this is the case, this just use
-Wl,--export-dynamic-symbol=__llvm_fs_discriminator__
to force the emit.

Differential Revision: https://reviews.llvm.org/D103988




More information about the All-commits mailing list