[llvm-branch-commits] [llvm] [CodeGen] Add initial multi-def rematerialization support (PR #197580)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Jun 9 08:49:51 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

The build failed before running any tests. Click on a failure below to see the details.

<details>
<summary>[code=1] lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/Rematerializer.cpp.obj</summary>

```
FAILED: [code=1] lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/Rematerializer.cpp.obj
sccache C:\clang\clang-msvc\bin\clang-cl.exe  /nologo -TP -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GLIBCXX_ASSERTIONS -D_HAS_EXCEPTIONS=0 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -IC:\_work\llvm-project\llvm-project\build\lib\CodeGen -IC:\_work\llvm-project\llvm-project\llvm\lib\CodeGen -IC:\_work\llvm-project\llvm-project\build\include -IC:\_work\llvm-project\llvm-project\llvm\include /DWIN32 /D_WINDOWS   /Zc:inline /Zc:__cplusplus /Oi /Brepro /bigobj /permissive- -Werror=unguarded-availability-new /W4  -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported /Gw /O2 /Ob2  -std:c++17 -MD -UNDEBUG /EHs-c- /GR- /showIncludes /Folib\CodeGen\CMakeFiles\LLVMCodeGen.dir\Rematerializer.cpp.obj /Fdlib\CodeGen\CMakeFiles\LLVMCodeGen.dir\LLVMCodeGen.pdb -c -- C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(314,3): error: no template named 'SmallSet'
314 |   SmallSet<RegisterIdx, 8> ShrinkRematRegs;
|   ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(315,25): error: use of undeclared identifier 'ShrinkUnrematRegs'; did you mean 'ShrinkRematRegs'?
315 |   SmallSet<Register, 8> ShrinkUnrematRegs;
|                         ^~~~~~~~~~~~~~~~~
|                         ShrinkRematRegs
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(314,28): note: 'ShrinkRematRegs' declared here
314 |   SmallSet<RegisterIdx, 8> ShrinkRematRegs;
|                            ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(315,3): error: use of undeclared identifier 'SmallSet'
315 |   SmallSet<Register, 8> ShrinkUnrematRegs;
|   ^~~~~~~~
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(327,11): error: use of undeclared identifier 'ShrinkUnrematRegs'; did you mean 'ShrinkRematRegs'?
327 |       if (ShrinkUnrematRegs.insert(Reg).second)
|           ^~~~~~~~~~~~~~~~~
|           ShrinkRematRegs
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(314,28): note: 'ShrinkRematRegs' declared here
314 |   SmallSet<RegisterIdx, 8> ShrinkRematRegs;
|                            ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(603,44): error: use of undeclared identifier 'UnrematDeps'; did you mean 'RematDeps'?
603 |   SmallMapVector<Register, LaneBitmask, 2> UnrematDeps;
|                                            ^~~~~~~~~~~
|                                            RematDeps
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(602,34): note: 'RematDeps' declared here
602 |   SmallSetVector<RegisterIdx, 2> RematDeps;
|                                  ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(603,3): error: use of undeclared identifier 'SmallMapVector'
603 |   SmallMapVector<Register, LaneBitmask, 2> UnrematDeps;
|   ^~~~~~~~~~~~~~
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(616,13): error: use of undeclared identifier 'UnrematDeps'; did you mean 'RematDeps'?
616 |             UnrematDeps.try_emplace(DepReg, LaneBitmask::getNone())
|             ^~~~~~~~~~~
|             RematDeps
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(602,34): note: 'RematDeps' declared here
602 |   SmallSetVector<RegisterIdx, 2> RematDeps;
|                                  ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(616,25): error: no member named 'try_emplace' in 'llvm::SmallSetVector<unsigned int, 2>'
616 |             UnrematDeps.try_emplace(DepReg, LaneBitmask::getNone())
|             ~~~~~~~~~~~ ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(630,43): error: use of undeclared identifier 'UnrematDeps'; did you mean 'RematDeps'?
630 |     for (const auto &[UnrematDepReg, _] : UnrematDeps) {
|                                           ^~~~~~~~~~~
|                                           RematDeps
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(602,34): note: 'RematDeps' declared here
602 |   SmallSetVector<RegisterIdx, 2> RematDeps;
|                                  ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(630,22): error: cannot bind non-class, non-array type 'unsigned int const'
630 |     for (const auto &[UnrematDepReg, _] : UnrematDeps) {
|                      ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SetVector.h(106,26): note: selected 'begin' function with iterator type 'iterator' (aka 'const unsigned int *')
106 |   [[nodiscard]] iterator begin() { return vector_.begin(); }
|                          ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(644,29): error: use of undeclared identifier 'UnrematDeps'; did you mean 'RematDeps'?
644 |   UnrematableDeps.push_back(UnrematDeps.takeVector());
|                             ^~~~~~~~~~~
|                             RematDeps
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(602,34): note: 'RematDeps' declared here
602 |   SmallSetVector<RegisterIdx, 2> RematDeps;
|                                  ^
C:\_work\llvm-project\llvm-project\llvm\lib\CodeGen\Rematerializer.cpp(644,19): error: no matching member function for call to 'push_back'
644 |   UnrematableDeps.push_back(UnrematDeps.takeVector());
|   ~~~~~~~~~~~~~~~~^~~~~~~~~
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(423,8): note: candidate function not viable: no known conversion from 'SmallVector<unsigned int, [...]>' to 'const SmallVector<std::pair<llvm::Register, llvm::LaneBitmask>, [...]>' for 1st argument
423 |   void push_back(const T &Elt) {
|        ^         ~~~~~~~~~~~~
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(429,8): note: candidate function not viable: no known conversion from 'SmallVector<unsigned int, [...]>' to 'SmallVector<std::pair<llvm::Register, llvm::LaneBitmask>, [...]>' for 1st argument
429 |   void push_back(T &&Elt) {
|        ^         ~~~~~~~
12 errors generated.
```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/197580


More information about the llvm-branch-commits mailing list