[all-commits] [llvm/llvm-project] 1e4fd5: [CodeGen] Add test for PR53990 (NFC)

Michał Górny via All-commits all-commits at lists.llvm.org
Mon Mar 7 21:02:57 PST 2022


  Branch: refs/heads/release/14.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 1e4fd59253c60c78a222f85c42501302142a3586
      https://github.com/llvm/llvm-project/commit/1e4fd59253c60c78a222f85c42501302142a3586
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    A llvm/test/CodeGen/X86/pr53990-incorrect-machine-sink.ll

  Log Message:
  -----------
  [CodeGen] Add test for PR53990 (NFC)

(cherry picked from commit e075bf6bdbcaa2652891ebff3e7ce9ca00cadd8a)


  Commit: 67555104d23aaef9b4ce4995ccb98b2ba9aff07d
      https://github.com/llvm/llvm-project/commit/67555104d23aaef9b4ce4995ccb98b2ba9aff07d
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    M llvm/lib/CodeGen/MachineSink.cpp
    M llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll
    M llvm/test/CodeGen/X86/pr38795.ll
    M llvm/test/CodeGen/X86/pr53990-incorrect-machine-sink.ll
    M llvm/test/CodeGen/X86/x86-shrink-wrapping.ll

  Log Message:
  -----------
  [MachineSink] Disable if there are any irreducible cycles

This is an alternative to D120330, which disables MachineSink for
functions with irreducible cycles entirely. This avoids both the
correctness problem, and ensures we don't perform non-profitable
sinks into cycles. At the same time, it may also disable
profitable sinks in the same function. This can be made more
precise by using MachineCycleInfo in the future.

Fixes https://github.com/llvm/llvm-project/issues/53990.

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

(cherry picked from commit 6fde0439512580df793f3f48f95757b47de40d2b)


  Commit: 36bf1a9e628dd086537ec14db3fcf4feed1393e9
      https://github.com/llvm/llvm-project/commit/36bf1a9e628dd086537ec14db3fcf4feed1393e9
  Author: William S. Moses <gh at wsmoses.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    A llvm/test/Transforms/PhaseOrdering/X86/speculation-vs-tbaa.ll

  Log Message:
  -----------
  [NFC][PhaseOrdering] Precommit tests from D119965

(cherry picked from commit 73ee82871e60ab87af7a722ef089ede17e97ea9f)


  Commit: 1f4613675051f029a769c21996f19aa451ed17db
      https://github.com/llvm/llvm-project/commit/1f4613675051f029a769c21996f19aa451ed17db
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    M llvm/test/Transforms/PhaseOrdering/X86/spurious-peeling.ll

  Log Message:
  -----------
  [NFC][PhaseOrdering] spurious-peeling.ll: also test -O1/-O2 results

(cherry picked from commit a5b9987aab7601176902bf939fed2653f978450c)


  Commit: 7d1cd3380add0e3ab6e8040717fc1413604d78bf
      https://github.com/llvm/llvm-project/commit/7d1cd3380add0e3ab6e8040717fc1413604d78bf
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    A llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll
    M llvm/test/Transforms/PhaseOrdering/X86/speculation-vs-tbaa.ll
    M llvm/test/Transforms/PhaseOrdering/X86/spurious-peeling.ll

  Log Message:
  -----------
  [NFC][PhaseOrdering] Improve test coverage for D119975

(cherry picked from commit 07cf95942f57a85d9626a1c9ef8b90deb123bdb6)


  Commit: 2de2a2bba998f4145cfd4298d39bfd5e98485bdd
      https://github.com/llvm/llvm-project/commit/2de2a2bba998f4145cfd4298d39bfd5e98485bdd
  Author: William S. Moses <gh at wsmoses.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    M llvm/include/llvm/Transforms/Scalar.h
    M llvm/include/llvm/Transforms/Scalar/LICM.h
    M llvm/include/llvm/Transforms/Utils/LoopUtils.h
    M llvm/lib/Passes/PassBuilderPipelines.cpp
    M llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
    M llvm/lib/Transforms/Scalar/LICM.cpp
    M llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll
    M llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll
    M llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll
    M llvm/test/Transforms/PhaseOrdering/X86/speculation-vs-tbaa.ll
    M llvm/test/Transforms/PhaseOrdering/X86/spurious-peeling.ll

  Log Message:
  -----------
  [LICM][PhaseOrder] Don't speculate in LICM until after running loop rotate

LICM will speculatively hoist code outside of loops. This requires removing information, like alias analysis (https://github.com/llvm/llvm-project/issues/53794), range information (https://bugs.llvm.org/show_bug.cgi?id=50550), among others. Prior to https://reviews.llvm.org/D99249 , LICM would only be run after LoopRotate. Running Loop Rotate prior to LICM prevents a instruction hoist from being speculative, if it was conditionally executed by the iteration (as is commonly emitted by clang and other frontends). Adding the additional LICM pass first, however, forces all of these instructions to be considered speculative, even if they are not speculative after LoopRotate. This destroys information, resulting in performance losses for discarding this additional information.

This PR modifies LICM to accept a ``speculative'' parameter which allows LICM to be set to perform information-loss speculative hoists or not. Phase ordering is then modified to not perform the information-losing speculative hoists until after loop rotate is performed, preserving this additional information.

Reviewed By: lebedev.ri

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

(cherry picked from commit d9da6a535f21946cfaac1516ef28ac7646211d56)


  Commit: 6a713120502abc0a42b8d518edea345b60e829f3
      https://github.com/llvm/llvm-project/commit/6a713120502abc0a42b8d518edea345b60e829f3
  Author: Michał Górny <mgorny at moritz.systems>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    M llvm/bindings/ocaml/README.txt
    M llvm/cmake/config-ix.cmake
    M llvm/test/Bindings/OCaml/lit.local.cfg
    M llvm/test/CMakeLists.txt
    M llvm/test/lit.site.cfg.py.in
    M llvm/utils/gn/secondary/llvm/test/BUILD.gn

  Log Message:
  -----------
  [llvm] [bindings/OCaml] Remove unused dep on ounit2

Remove the dependency on ounit2 and the relevant lit code.  It seems
that ounit2 is not used at all and all OCaml binding tests pass without
it installed.

Thanks for Shiwei Weng and Josh Berdine for bringing this to
my attention.

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

(cherry picked from commit 2c5c243bb5152de35c41f5880271451fce6165d0)


Compare: https://github.com/llvm/llvm-project/compare/bfaed485756a...6a713120502a


More information about the All-commits mailing list