[llvm] [TableGen] Complete the support for artificial registers (PR #183371)

Mikael Holmen via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 4 22:40:45 PST 2026


mikaelholmen wrote:

Hi,

When I try to build with EXPENSIVE_CHECKS on trunk now, I get this:
```
FAILED: lib/Target/AMDGPU/AMDGPUGenDAGISel.inc /repo/llvm/llvm/build-all-expensive/lib/Target/AMDGPU/AMDGPUGenDAGISel.inc
cd /repo/llvm/llvm/build-all-expensive/lib/Target/AMDGPU && /repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen -gen-dag-isel -I/repo/llvm/llvm/lib/Target/AMDGPU -I/repo/llvm/llvm/build-all-expensive/include -I/repo/llvm/llvm/include -I /repo/llvm/llvm/lib/Target -omit-comments /repo/llvm/llvm/lib/Target/AMDGPU/AMDGPU.td --write-if-changed -o AMDGPUGenDAGISel.inc -d AMDGPUGenDAGISel.inc.d && [...]/cmake/3.27.2/bin/cmake -E cmake_transform_depfile Ninja gccdepfile /repo/llvm/llvm /repo/llvm/llvm/lib/Target/AMDGPU /repo/llvm/llvm/build-all-expensive /repo/llvm/llvm/build-all-expensive/lib/Target/AMDGPU /repo/llvm/llvm/build-all-expensive/lib/Target/AMDGPU/AMDGPUGenDAGISel.inc.d /repo/llvm/llvm/build-all-expensive/CMakeFiles/d/371be3e757501e53fdeada02e8926e2cc28c555cd06d736eebc72d4022f27384.d
[...]/gcc/x86_64-pc-linux-gnu/13.3.0/../../../../include/c++/13.3.0/debug/safe_iterator.h:314:
In function:
    pointer
    gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<std::pair<llvm::CodeGenSubRegIndex
    *const, llvm::CodeGenRegister *>>, std::map<llvm::CodeGenSubRegIndex *,
    llvm::CodeGenRegister *, llvm::deref<std::less<void>>>,
    std::forward_iterator_tag>::operator->() const [_Iterator =
    std::_Rb_tree_const_iterator<std::pair<llvm::CodeGenSubRegIndex *const,
    llvm::CodeGenRegister *>>, _Sequence = std::map<llvm::CodeGenSubRegIndex
    *, llvm::CodeGenRegister *, llvm::deref<std::less<void>>>, _Category =
    std::forward_iterator_tag]

Error: attempt to dereference a past-the-end iterator.

Objects involved in the operation:
    iterator "this" @ 0x7ffc3412b260 {
      state = past-the-end;
      references sequence @ 0x55d3a5b26768
    }
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.      Program arguments: /repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen -gen-dag-isel -I/repo/llvm/llvm/lib/Target/AMDGPU -I/repo/llvm/llvm/build-all-expensive/include -I/repo/llvm/llvm/include -I /repo/llvm/llvm/lib/Target -omit-comments /repo/llvm/llvm/lib/Target/AMDGPU/AMDGPU.td --write-if-changed -o AMDGPUGenDAGISel.inc -d AMDGPUGenDAGISel.inc.d
 #0 0x000055d37775cfe6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x7f6fe6)
 #1 0x000055d377759ec5 llvm::sys::RunSignalHandlers() (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x7f3ec5)
 #2 0x000055d37775de69 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007fd8bea66990 __restore_rt (/lib64/libpthread.so.0+0x12990)
 #4 0x00007fd8bc40552f raise (/lib64/libc.so.6+0x4e52f)
 #5 0x00007fd8bc3d8e65 abort (/lib64/libc.so.6+0x21e65)
 #6 0x000055d3777d8bc3 (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x872bc3)
 #7 0x000055d37735dca0 llvm::CodeGenRegBank::inferMatchingSuperRegClass(llvm::CodeGenRegisterClass*, __gnu_debug::_Safe_iterator<std::__cxx1998::_List_iterator<llvm::CodeGenRegisterClass>, std::__debug::list<llvm::CodeGenRegisterClass, std::allocator<llvm::CodeGenRegisterClass>>, std::bidirectional_iterator_tag>) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x3f7ca0)
 #8 0x000055d377347339 llvm::CodeGenRegBank::computeInferredRegisterClasses() (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x3e1339)
 #9 0x000055d377344073 llvm::CodeGenRegBank::CodeGenRegBank(llvm::RecordKeeper const&, llvm::CodeGenHwModes const&, bool) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x3de073)
#10 0x000055d3773de058 llvm::CodeGenTarget::getRegBank() const (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x478058)
#11 0x000055d3773de8e4 llvm::CodeGenTarget::ReadLegalValueTypes() const (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x4788e4)
#12 0x000055d3772ff0a0 llvm::CodeGenDAGPatterns::CodeGenDAGPatterns(llvm::RecordKeeper const&, bool) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x3990a0)
#13 0x000055d3774c08dc llvm::TableGen::Emitter::OptClass<(anonymous namespace)::DAGISelEmitter>::run(llvm::StringRef, llvm::RecordKeeper const&) DAGISelEmitter.cpp:0:0
#14 0x000055d37779a585 llvm::TableGen::Emitter::ApplyCallback(llvm::RecordKeeper const&, llvm::TableGenOutputFiles&, llvm::StringRef) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x834585)
#15 0x000055d37776e0ef llvm::TableGenMain(char const*, llvm::function_ref<bool (llvm::TableGenOutputFiles&, llvm::RecordKeeper const&)>) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x8080ef)
#16 0x000055d37725b8e6 tblgen_main(int, char**) (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x2f58e6)
#17 0x00007fd8bc3f17e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#18 0x000055d3771e030e _start (/repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen+0x27a30e)
/bin/sh: line 1: 2910978 Aborted                 (core dumped) /repo/llvm/llvm/build-all-expensive/bin/llvm-tblgen -gen-dag-isel -I/repo/llvm/llvm/lib/Target/AMDGPU -I/repo/llvm/llvm/build-all-expensive/include -I/repo/llvm/llvm/include -I /repo/llvm/llvm/lib/Target -omit-comments /repo/llvm/llvm/lib/Target/AMDGPU/AMDGPU.td --write-if-changed -o AMDGPUGenDAGISel.inc -d AMDGPUGenDAGISel.inc.d
```

I haven't bisected to a specific commit, I just looked through the commit range where this started happening and saw this PR.
Do you think the above might be related to this patch?

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


More information about the llvm-commits mailing list