[all-commits] [llvm/llvm-project] 73cb54: [NFC][SimplifyCFG] Autogenerate checklines in a fe...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Wed Feb 2 06:54:32 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 73cb542930bb28424aea4329a43de11b5b3a6761
      https://github.com/llvm/llvm-project/commit/73cb542930bb28424aea4329a43de11b5b3a6761
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
    M llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll
    M llvm/test/Transforms/SimplifyCFG/bbi-23595.ll
    M llvm/test/Transforms/SimplifyCFG/no-md-sink.ll
    M llvm/test/Transforms/SimplifyCFG/preserve-store-alignment.ll

  Log Message:
  -----------
  [NFC][SimplifyCFG] Autogenerate checklines in a few tests being affected by upcoming change


  Commit: 1e353f092288309d74d380367aa50bbd383780ed
      https://github.com/llvm/llvm-project/commit/1e353f092288309d74d380367aa50bbd383780ed
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    M llvm/test/CodeGen/AArch64/check-sign-bit-before-extension.ll
    M llvm/test/CodeGen/AArch64/combine-comparisons-by-cse.ll
    M llvm/test/CodeGen/AArch64/typepromotion-phisret.ll
    M llvm/test/CodeGen/ARM/ifcvt-callback.ll
    M llvm/test/CodeGen/ARM/ifcvt1.ll
    M llvm/test/Transforms/PGOProfile/chr.ll
    M llvm/test/Transforms/PhaseOrdering/X86/earlycse-after-simplifycfg-two-entry-phi-node-folding.ll
    M llvm/test/Transforms/PhaseOrdering/X86/merge-functions.ll
    M llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
    M llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll
    M llvm/test/Transforms/SimplifyCFG/bbi-23595.ll
    M llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll
    M llvm/test/Transforms/SimplifyCFG/no-md-sink.ll
    M llvm/test/Transforms/SimplifyCFG/preserve-store-alignment.ll

  Log Message:
  -----------
  [SimplifyCFG] Start redesigning `FoldTwoEntryPHINode()`.

The current `FoldTwoEntryPHINode()` is not quite designed correctly.
It starts from the merge point, and then tries to detect
the 'divergence' point.

Because of that, it is limited to the simple two-predecessor case,
where the PHI completely goes away. but that is rather pessimistic,
and it doesn't make much sense from the costmodel side of things.

For example if there is some other unrelated predecessor of
the merge point,  we could split the merge point so that
the then/else blocks first branch to an empty block
and then to the merge point, and then we'd be able to speculate
the then/else code.

But if we'd instead simply start at the divergence point,
and look for the merge point, then we'll just natively support this case.

There's also the fact that `SpeculativelyExecuteBB()` already does
just that, but only if there is a single block to speculate,
and with a much more restrictive cost model.
But that also means we have code duplication.

Now, sadly, while this is as much NFCI as possible,
there is just no way to cleanly migrate to
the proper implementation. The results *are* going to be different
somewhat because of various phase ordering effects and SimplifyCFG
block iteration strategy.


  Commit: 34a98e1046e3aa55e5f26ab20a15e96b4034d25a
      https://github.com/llvm/llvm-project/commit/34a98e1046e3aa55e5f26ab20a15e96b4034d25a
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp

  Log Message:
  -----------
  [NFC][SimplifyCFG] `FoldTwoEntryPHINode()`: s/BB/MergeBB/


  Commit: c5fff9095342a792bf4b9a077fe3c3a83c4e566c
      https://github.com/llvm/llvm-project/commit/c5fff9095342a792bf4b9a077fe3c3a83c4e566c
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp

  Log Message:
  -----------
  [NFC][SimplifyCFG] Merge `FoldTwoEntryPHINode()` into it's only callee


Compare: https://github.com/llvm/llvm-project/compare/79728453b7f6...c5fff9095342


More information about the All-commits mailing list