Issue 156393
Summary [RISC-V, clang++ 20.1.8] error in backend: Incomplete scavenging after 2nd pass
Labels clang
Assignees
Reporter Tang-Haojin
    Hi, I am trying to compile a cpp project using riscv64-unknown-elf-clang++ from [riscv-gnu-toolchain](https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.08.29/riscv64-elf-ubuntu-22.04-llvm-nightly-2025.08.29-nightly.tar.xz), but I am encountering an error. The backtrace is as follows. If there is anything else I can do, please let me know. Thank you!

FYI, This error does not occur with `-O0` and occurs with `-O1`, `-O2` or `-O3`.

```
fatal error: error in backend: Incomplete scavenging after 2nd pass
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang++ -o build/applications/SimTop260.o -c -mcmodel=medany -march=rv64imac -mabi=lp64 -flax-vector-conversions -Wno-cpp -fno-common -ffunction-sections -fdata-sections -fdiagnostics-color=always -Xclang -fexperimental-max-bitint-width=20000 -fbracket-depth=2048 -Wno-parentheses-equality -O1 -mcmodel=medany -march=rv64imac -mabi=lp64 -flax-vector-conversions -Wno-cpp -fno-common -ffunction-sections -fdata-sections -fdiagnostics-color=always -Xclang -fexperimental-max-bitint-width=20000 -fbracket-depth=2048 -Wno-parentheses-equality -O1 -D__RTTHREAD__ -DRT_USING_NEWLIBC -DRT_USING_LIBC -D_POSIX_C_SOURCE=1 -I. -Iapplications -Iapplications/test -Iapplications/test/test_vector -Idriver -I/nfs/home/tanghaojin/rt-thread-2/include -I/nfs/home/tanghaojin/rt-thread-2/libcpu/risc-v/common64 -I/nfs/home/tanghaojin/rt-thread-2/libcpu/risc-v/virt64 -I/nfs/home/tanghaojin/rt-thread-2/components/net/lwip/lwip-2.0.3/src/include -I/nfs/home/tanghaojin/rt-thread-2/components/net/lwip/lwip-2.0.3/src/include/ipv4 -I/nfs/home/tanghaojin/rt-thread-2/components/net/lwip/lwip-2.0.3/src/include/netif -I/nfs/home/tanghaojin/rt-thread-2/components/net/lwip/port -I/nfs/home/tanghaojin/rt-thread-2/components/net/netdev/include -I/nfs/home/tanghaojin/rt-thread-2/components/net/sal/include -I/nfs/home/tanghaojin/rt-thread-2/components/net/sal/include/socket -I/nfs/home/tanghaojin/rt-thread-2/components/net/sal/impl -I/nfs/home/tanghaojin/rt-thread-2/components/net/sal/include/dfs_net -I/nfs/home/tanghaojin/rt-thread-2/components/net/sal/include/socket/sys_socket -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/resource -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/utest -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/libadt/bitmap -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/libadt/ref -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/libadt/avl -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/libadt/uthash -I/nfs/home/tanghaojin/rt-thread-2/components/utilities/libadt/hashmap -I/nfs/home/tanghaojin/rt-thread-2/components/dfs/dfs_v2/include -I/nfs/home/tanghaojin/rt-thread-2/components/dfs/dfs_v2/filesystems/romfs -I/nfs/home/tanghaojin/rt-thread-2/components/dfs/dfs_v2/filesystems/elmfat -I/nfs/home/tanghaojin/rt-thread-2/components/dfs/dfs_v2/filesystems/devfs -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/phy -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/include -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/virtio -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/smp_call -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/ktime -I/nfs/home/tanghaojin/rt-thread-2/components/drivers/ktime/inc -I/nfs/home/tanghaojin/rt-thread-2/components/libc/cplusplus -I/nfs/home/tanghaojin/rt-thread-2/components/libc/cplusplus/os -I/nfs/home/tanghaojin/rt-thread-2/components/libc/compilers/common/include -I/nfs/home/tanghaojin/rt-thread-2/components/libc/compilers/newlib -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/ipc -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/mman -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/poll -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/termios -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/aio -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/epoll -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/eventfd -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/io/stdio -I/nfs/home/tanghaojin/rt-thread-2/components/libc/posix/delay -I/nfs/home/tanghaojin/rt-thread-2/components/mm -I/nfs/home/tanghaojin/rt-thread-2/components/finsh applications/SimTop260.cpp
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'applications/SimTop260.cpp'.
4.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@_ZN7SSimTop10subStep258Ev'
 #0 0x000055cec9913650 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1e8d650)
 #1 0x000055cec9911534 llvm::sys::CleanupOnSignal(unsigned long) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1e8b534)
 #2 0x000055cec98633c7 llvm::CrashRecoveryContext::HandleExit(int) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1ddd3c7)
 #3 0x000055cec9908832 llvm::sys::Process::Exit(int, bool) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1e82832)
 #4 0x000055cec8862bcf LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x000055cec986bb50 llvm::report_fatal_error(llvm::Twine const&, bool) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1de5b50)
 #6 0x000055cec986bcde (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1de5cde)
 #7 0x000055cec8f1c117 llvm::scavengeFrameVirtualRegs(llvm::MachineFunction&, llvm::RegScavenger&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1496117)
 #8 0x000055cec91a5e52 (anonymous namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&) PrologEpilogInserter.cpp:0:0
 #9 0x000055cec8de5dc9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#10 0x000055cec93a1f72 llvm::FPPassManager::runOnFunction(llvm::Function&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x191bf72)
#11 0x000055cec93a2134 llvm::FPPassManager::runOnModule(llvm::Module&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x191c134)
#12 0x000055cec93a2b84 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x191cb84)
#13 0x000055cec9b9c088 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x2116088)
#14 0x000055ceca221310 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x279b310)
#15 0x000055cecbdf340c clang::ParseAST(clang::Sema&, bool, bool) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x436d40c)
#16 0x000055ceca519eb8 clang::FrontendAction::Execute() (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x2a93eb8)
#17 0x000055ceca48d7eb clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x2a077eb)
#18 0x000055ceca5ee4a3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x2b684a3)
#19 0x000055cec88652c8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0xddf2c8)
#20 0x000055cec885d052 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#21 0x000055ceca26f68d void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#22 0x000055cec98632b7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x1ddd2b7)
#23 0x000055ceca26fa27 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#24 0x000055ceca232601 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x27ac601)
#25 0x000055ceca233629 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x27ad629)
#26 0x000055ceca246e3f clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0x27c0e3f)
#27 0x000055cec88616b1 clang_main(int, char**, llvm::ToolContext const&) (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0xddb6b1)
#28 0x000055cec87832fb main (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0xcfd2fb)
#29 0x00007ff00ad0bd90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x00007ff00ad0be40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x00007ff00ad0be40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x000055cec885cab5 _start (/nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin/riscv64-unknown-elf-clang+++0xdd6ab5)
riscv64-unknown-elf-clang++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 20.1.8 (https://github.com/llvm/llvm-project.git 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
Target: riscv64-unknown-unknown-elf
Thread model: posix
InstalledDir: /nfs/home/tanghaojin/riscv-llvm-newlib/riscv-llvm20/bin
riscv64-unknown-elf-clang++: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
riscv64-unknown-elf-clang++: note: diagnostic msg: /tmp/SimTop260-930fd0.cpp
riscv64-unknown-elf-clang++: note: diagnostic msg: /tmp/SimTop260-930fd0.sh
riscv64-unknown-elf-clang++: note: diagnostic msg:

********************
```

Preprocessed source: [SimTop260-930fd0.cpp.gz](https://github.com/user-attachments/files/22085940/SimTop260-930fd0.cpp.gz)
Run script: [SimTop260-930fd0.sh](https://github.com/user-attachments/files/22085936/SimTop260-930fd0.sh)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to