[llvm] [MachineScheduler] Rework dag-maps-huge-region (PR #200945)

Valery Dmitriev via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 9 08:21:22 PDT 2026


valerydmit wrote:

We are observing a crash on an assertion related to this commit:
```
$ llc  -O1 t2.ll -o /dev/null
llc: /llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:519: void llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(): Assertion `Node2Index[SU.NodeNum] > Node2Index[PD.getSUnit()->NodeNum] && "Wrong topological sorting"' failed.
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: /proj/scratch/valeryd/install-debug/x86_64/bin/llc -O1 t2.ll -o /dev/null
1.	Running pass 'Function Pass Manager' on module 't2.ll'.
2.	Running pass 'Machine Instruction Scheduler' on function '@_QQmain'
 #0 0x0000000006a2622d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-project/llvm/lib/Support/Unix/Signals.inc:881:11
 #1 0x0000000006a2678b PrintStackTraceSignalHandler(void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:963:1
 #2 0x0000000006a2445f llvm::sys::RunSignalHandlers() /llvm-project/llvm/lib/Support/Signals.cpp:108:5
 #3 0x0000000006a2700d SignalHandler(int, siginfo_t*, void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:448:38
 #4 0x00007fdd346a9990 __restore_rt (/lib64/libpthread.so.0+0x12990)
 #5 0x00007fdd336c55af raise (/lib64/libc.so.6+0x4e5af)
 #6 0x00007fdd33698ee5 abort (/lib64/libc.so.6+0x21ee5)
 #7 0x00007fdd33698db9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21db9)
 #8 0x00007fdd336bdf06 (/lib64/libc.so.6+0x46f06)
 #9 0x0000000004ff06b1 llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting() /llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:517:5
#10 0x0000000004ff0787 llvm::ScheduleDAGTopologicalSort::FixOrder() /llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:529:5
#11 0x0000000004ff148c llvm::ScheduleDAGTopologicalSort::IsReachable(llvm::SUnit const*, llvm::SUnit const*) /llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:730:3
#12 0x0000000004ffbde7 llvm::ScheduleDAGInstrs::addEdge(llvm::SUnit*, llvm::SDep const&) /llvm-project/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1158:9
#13 0x0000000004e229be llvm::fuseInstructionPair(llvm::ScheduleDAGInstrs&, llvm::SUnit&, llvm::SUnit&) /llvm-project/llvm/lib/CodeGen/MacroFusion.cpp:126:25
#14 0x0000000004e2309f (anonymous namespace)::MacroFusion::scheduleAdjacentImpl(llvm::ScheduleDAGInstrs&, llvm::SUnit&) /llvm-project/llvm/lib/CodeGen/MacroFusion.cpp:221:9
#15 0x0000000004e22f35 (anonymous namespace)::MacroFusion::apply(llvm::ScheduleDAGInstrs*) /llvm-project/llvm/lib/CodeGen/MacroFusion.cpp:192:1
#16 0x0000000004cbc105 llvm::ScheduleDAGMI::postProcessDAG() /llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:1134:16
#17 0x0000000004cbe9ed llvm::ScheduleDAGMILive::schedule() /llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:1699:26
#18 0x0000000004cba502 llvm::impl_detail::MachineSchedulerBase::scheduleRegions(llvm::ScheduleDAGInstrs&, bool) /llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:889:7
#19 0x0000000004cb9d4c llvm::impl_detail::MachineSchedulerImpl::run(llvm::MachineFunction&, llvm::TargetMachine const&, llvm::impl_detail::MachineSchedulerImpl::RequiredAnalyses const&) /llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:574:3
#20 0x0000000004cca677 (anonymous namespace)::MachineSchedulerLegacy::runOnMachineFunction(llvm::MachineFunction&) /llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:665:3
#21 0x0000000004b7140b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:112:8
#22 0x0000000005466c00 llvm::FPPassManager::runOnFunction(llvm::Function&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1390:23
#23 0x000000000546b3f2 llvm::FPPassManager::runOnModule(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1436:16
#24 0x00000000054674ab (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1505:23
#25 0x000000000546702a llvm::legacy::PassManagerImpl::run(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:16
#26 0x000000000546b6d1 llvm::legacy::PassManager::run(llvm::Module&) /llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1632:3
#27 0x00000000037e1771 compileModule(char**, llvm::SmallVectorImpl<llvm::PassPlugin>&, llvm::LLVMContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&) /llvm-project/llvm/tools/llc/llc.cpp:882:9
#28 0x00000000037df304 main /llvm-project/llvm/tools/llc/llc.cpp:460:13
#29 0x00007fdd336b1865 __libc_start_main (/lib64/libc.so.6+0x3a865)
#30 0x00000000037dea6e _start (/proj/scratch/valeryd/install-debug/x86_64/bin/llc+0x37dea6e)
Aborted (core dumped)
```
The crash is gone if the commit reverted. Could you please take a look?
I wish I could reduce the reproducer even more but that's what I've got after overnight work of llvm-reduce.
[t2.zip](https://github.com/user-attachments/files/28761354/t2.zip)


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


More information about the llvm-commits mailing list