Skip to content

SLH assertion failure when building test-suite #60081

@nmosier

Description

@nmosier

The X86SpeculativeLoadHardening pass encounters an assertion failure when compiling one of the tests in the LLVM Test Suite.
pr84521-805e0d.zip

clang: /home/nmosier/llvm-project/llvm/include/llvm/CodeGen/Register.h:78: static unsigned int llvm::Register::virtReg2Index(llvm::Register): Assertion `isVirtualRegister(Reg) && "Not a virtual register"' failed.
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: /home/nmosier/llvm-project/build/bin/clang -DNDEBUG -fuse-ld=/home/nmosier/llvm-project/build/bin/ld.lld -Wno-unused-command-line-argument -mllvm -x86-speculative-load-hardening -O3 -DNDEBUG -w -Werror=date-time -w -fomit-frame-pointer -fno-inline -MD -MT SingleSource/Regression/C/gcc-c-torture/execute/CMakeFiles/GCC-C-execute-pr84521.dir/pr84521.c.o -MF SingleSource/Regression/C/gcc-c-torture/execute/CMakeFiles/GCC-C-execute-pr84521.dir/pr84521.c.o.d -o SingleSource/Regression/C/gcc-c-torture/execute/CMakeFiles/GCC-C-execute-pr84521.dir/pr84521.c.o -c /afs/cs.stanford.edu/u/nmosier/scfe-llvm/test-suite/SingleSource/Regression/C/gcc-c-torture/execute/pr84521.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '/afs/cs.stanford.edu/u/nmosier/scfe-llvm/test-suite/SingleSource/Regression/C/gcc-c-torture/execute/pr84521.c'.
4.      Running pass 'X86 speculative load hardening' on function '@broken_longjmp'
 #0 0x000055fabc83b5a9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/nmosier/llvm-project/build/bin/clang+0x19145a9)
 #1 0x000055fabc83a181 llvm::sys::RunSignalHandlers() (/home/nmosier/llvm-project/build/bin/clang+0x1913181)
 #2 0x000055fabc7dfb59 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #3 0x000055fabc7e00d6 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #4 0x00007f28f7559520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007f28f75ada7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007f28f75ada7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x00007f28f75ada7c pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x00007f28f7559476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x00007f28f753f7f3 abort ./stdlib/abort.c:81:7
#10 0x00007f28f753f71b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007f28f7550e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x000055fabbc00eb3 (/home/nmosier/llvm-project/build/bin/clang+0xcd9eb3)
#13 0x000055fabbc021aa llvm::IndexedMap<std::pair<llvm::PointerUnion<llvm::TargetRegisterClass const*, llvm::RegisterBank const*>, llvm::MachineOperand*>, llvm::VirtReg2IndexFunctor>::operator[](llvm::Register) const (/home/nmosier/llvm-project/build/bin/clang+0xcdb1aa)
#14 0x000055fabbc2e4a9 llvm::MachineRegisterInfo::getRegClass(llvm::Register) const (/home/nmosier/llvm-project/build/bin/clang+0xd074a9)
#15 0x000055fabbdab54f (anonymous namespace)::X86SpeculativeLoadHardeningPass::canHardenRegister(llvm::Register) X86SpeculativeLoadHardening.cpp:0:0
#16 0x000055fabbdadca3 (anonymous namespace)::X86SpeculativeLoadHardeningPass::tracePredStateThroughBlocksAndHarden(llvm::MachineFunction&) X86SpeculativeLoadHardening.cpp:0:0
#17 0x000055fabbdb2b81 (anonymous namespace)::X86SpeculativeLoadHardeningPass::runOnMachineFunction(llvm::MachineFunction&) X86SpeculativeLoadHardening.cpp:0:0
#18 0x000055fabc0697bf llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#19 0x000055fabc3693cb llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/nmosier/llvm-project/build/bin/clang+0x14423cb)
#20 0x000055fabc369561 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/nmosier/llvm-project/build/bin/clang+0x1442561)
#21 0x000055fabc369ba8 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/nmosier/llvm-project/build/bin/clang+0x1442ba8)
#22 0x000055fabca0e25c clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/home/nmosier/llvm-project/build/bin/clang+0x1ae725c)
#23 0x000055fabd2452a9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/nmosier/llvm-project/build/bin/clang+0x231e2a9)
#24 0x000055fabd906a13 clang::ParseAST(clang::Sema&, bool, bool) (/home/nmosier/llvm-project/build/bin/clang+0x29dfa13)
#25 0x000055fabce50712 clang::FrontendAction::Execute() (/home/nmosier/llvm-project/build/bin/clang+0x1f29712)
#26 0x000055fabce150b5 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/nmosier/llvm-project/build/bin/clang+0x1eee0b5)
#27 0x000055fabceba02e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/nmosier/llvm-project/build/bin/clang+0x1f9302e)
#28 0x000055fabbbee1fa cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/nmosier/llvm-project/build/bin/clang+0xcc71fa)
#29 0x000055fabbbebdf0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#30 0x000055fabcd6231a void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#31 0x000055fabc7dfd1a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/nmosier/llvm-project/build/bin/clang+0x18b8d1a)
#32 0x000055fabcd62be0 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#33 0x000055fabcd47842 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/nmosier/llvm-project/build/bin/clang+0x1e20842)
#34 0x000055fabcd479b4 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) const (/home/nmosier/llvm-project/build/bin/clang+0x1e209b4)
#35 0x000055fabcd560df clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/nmosier/llvm-project/build/bin/clang+0x1e2f0df)
#36 0x000055fabbb80f52 main (/home/nmosier/llvm-project/build/bin/clang+0xc59f52)
#37 0x00007f28f7540d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#38 0x00007f28f7540e40 call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007f28f7540e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#40 0x000055fabbbeb285 _start (/home/nmosier/llvm-project/build/bin/clang+0xcc4285)
clang-14: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/nmosier/llvm-project/build/bin
clang-14: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /tmp/pr84521-805e0d.c
clang-14: note: diagnostic msg: /tmp/pr84521-805e0d.sh

********************

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions