[all-commits] [llvm/llvm-project] 18e137: [BPF] Undo transformation for LICM.cpp:hoistMinMax()

eddyz87 via All-commits all-commits at lists.llvm.org
Tue Jul 11 12:32:47 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 18e13739b8c02e0b82e3e587c33e8731c8a46b0a
      https://github.com/llvm/llvm-project/commit/18e13739b8c02e0b82e3e587c33e8731c8a46b0a
  Author: Eduard Zingerman <eddyz87 at gmail.com>
  Date:   2023-07-11 (Tue, 11 Jul 2023)

  Changed paths:
    M llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp
    A llvm/test/CodeGen/BPF/sink-min-max.ll

  Log Message:
  -----------
  [BPF] Undo transformation for LICM.cpp:hoistMinMax()

Extended BPFCheckAndAdjustIR pass with sinkMinMax() transformation
that undoes LICM hoistMinMax pass.

The undo transformation converts the following patterns:

    x < min(a, b) -> x < a && x < b
    x > min(a, b) -> x > a || x > b
    x < max(a, b) -> x < a || x < b
    x > max(a, b) -> x > a && x > b

Where 'a' or 'b' is a constant.
Also supports `sext min(...) ...` and `zext min(...) ...`.

~~~

This was previously commited as 09feee559a29 and reverted in
0bf9bfeacc8c because of the testbot memory leak report:
  https://lab.llvm.org/buildbot/#/builders/5/builds/34931

The memory leak issue was caused by incorrect instruction removal
sequence in skinMinMaxBB():

    I->dropAllReferences();  -------->  I->eraseFromParent();
    I->removeFromParent();   fixed to

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




More information about the All-commits mailing list