[llvm-dev] Optimization about Sink.cpp pass

Zeson Wu via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 18 03:55:30 PDT 2019


Hi, all

I found a pass at lib/Transforms/Scalar/Sink.cpp which can be used to
sinking optimization. But curiously it's not enabled in opt as default and
only enabled in AMDGPU backend. Does anyone know the reason?

And I have an instruction sequence as following to be sinked. The
MachineSink pass and Sink.cpp only handle instructions with 2 successors,
how to sink such computing sequence across call?(Because there are much
more available registers after call, volatile registers can be used.)

```

int g();
int foo(int m) {

        int t = m *3;
        int q = m/3;
        int q1 = m/31;
        int q2 = m/32;
        int q3 = m/33;
        g();

        return t+q+q1+q2+q3;
}

```

-- 
Zeson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190918/2831ab11/attachment.html>


More information about the llvm-dev mailing list