SuccessChanges

Summary

  1. [ORC] Update lazyReexports to support aliases with different symbol (details)
  2. [ORC] Simplify use of lazyReexports with LLJIT. (details)
  3. [mlir][Linalg] NFC - Cleanup Linalg Pass locations and namespacing (details)
  4. [mlir][Linalg] NFC - Hotfix for gcc-5 build (details)
  5. [InstCombine] reassociate fsub+fsub into fsub+fadd (details)
Commit d2fabd70065edefacee0d8a3122c73bc15e0f848 by Lang Hames
[ORC] Update lazyReexports to support aliases with different symbol
names.
A bug in the existing implementation meant that lazyReexports would not
work if the aliased name differed from the alias's name, i.e. all lazy
reexports had to be of the form (lib1, name) -> (lib2, name). This patch
fixes the issue by capturing the alias's name in the NotifyResolved
callback. To simplify this capture, and the LazyCallThroughManager code
in general, the NotifyResolved callback is updated to use
llvm::unique_function rather than a custom class.
No test case yet: This can only be tested at runtime, and the only
in-tree client (lli) always uses aliases with matching names. I will add
a new LLJIT example shortly that will directly test the lazyReexports
API and the non-trivial alias use case.
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h (diff)
The file was modifiedllvm/lib/ExecutionEngine/Orc/LazyReexports.cpp (diff)
The file was modifiedllvm/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp (diff)
Commit e9e26c01cd865da678b1af6ba5f417c713956a66 by Lang Hames
[ORC] Simplify use of lazyReexports with LLJIT.
This patch makes the target triple available via the LLJIT interface,
and moves the IRTransformLayer from LLLazyJIT down into LLJIT. Together
these changes make it easier to use the lazyReexports utility with
LLJIT, and to apply IR transforms to code as it is compiled in LLJIT
(rather than requiring transforms to be applied manually before code is
added). An code example is added in
llvm/examples/LLJITExamples/LLJITWithLazyReexports
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/LLJIT.h (diff)
The file was modifiedllvm/tools/lli/lli.cpp (diff)
The file was modifiedllvm/examples/LLJITExamples/CMakeLists.txt (diff)
The file was addedllvm/examples/LLJITExamples/LLJITWithLazyReexports/CMakeLists.txt
The file was modifiedllvm/lib/ExecutionEngine/Orc/LLJIT.cpp (diff)
The file was addedllvm/examples/LLJITExamples/LLJITWithLazyReexports/LLJITWithLazyReexports.cpp
Commit 7741de94358b827086a4542202fdb2aac99687d4 by ntv
[mlir][Linalg] NFC - Cleanup Linalg Pass locations and namespacing
Summary: This diff moves the conversion pass declaration closer to its
definition and makes the namespacing of passes consistent with the rest
of the infrastructure (i.e. `mlir::linalg::createXXXPass` ->
`mlir::createXXXPass`).
Reviewers: ftynse, jpienaar, mehdi_amini
Subscribers: rriddle, burmako, shauheen, antiagainst, arpith-jacob,
mgester, lucyrfox, aartbik, liufengdb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72766
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Promotion.cpp (diff)
The file was modifiedmlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp (diff)
The file was modifiedmlir/include/mlir/Conversion/LinalgToLLVM/LinalgToLLVM.h (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Tiling.cpp (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Fusion.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Linalg/Passes.h (diff)
Commit 88380b91c87e83fc8984c17d86017df0a3de62aa by ntv
[mlir][Linalg] NFC - Hotfix for gcc-5 build
The file was modifiedmlir/lib/Dialect/Linalg/EDSC/Builders.cpp (diff)
Commit 3180af4362be22d416464f5f3700c456b2f124b9 by spatel
[InstCombine] reassociate fsub+fsub into fsub+fadd
As discussed in the motivating PR44509:
https://bugs.llvm.org/show_bug.cgi?id=44509
...we can end up with worse code using fast-math than without. This is
because the reassociate pass greedily transforms fsub into fneg/fadd and
apparently (based on the regression tests seen here) expects instcombine
to clean that up if it wasn't profitable. But we were missing this fold:
(X - Y) - Z --> X - (Y + Z)
There's another, more specific case that I think we should handle as
shown in the "fake" fneg test (but missed with a real fneg), but that's
another patch. That may be tricky to get right without conflicting with
existing transforms for fneg.
Differential Revision: https://reviews.llvm.org/D72521
The file was modifiedllvm/test/Transforms/InstCombine/fsub.ll (diff)
The file was modifiedllvm/test/Transforms/Reassociate/fast-SubReassociate.ll (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp (diff)
The file was modifiedllvm/test/Transforms/Reassociate/fast-basictest.ll (diff)