Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clang-19 fatal error: error in backend: Cannot select: intrinsic %llvm.preserve.struct.access.index when using builtin_preserve_access_index() #92336

Open
iamanonymouscs opened this issue May 16, 2024 · 1 comment
Labels
backend:X86 crash Prefer [crash-on-valid] or [crash-on-invalid]

Comments

@iamanonymouscs
Copy link

Clang-19 crashed when using builtin_preserve_access_index() with -g

Compiler explorer: https://godbolt.org/z/csM7Gqbar

$cat mutant.c
struct {
  int a;
} b;
int c() { return __builtin_preserve_access_index(b.a); }

$clang-19 -g -c mutant.c
fatal error: error in backend: Cannot select: intrinsic %llvm.preserve.struct.access.index
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: clang-19 -g mutant.c -c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'mutant.c'.
4.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@c'
 #0 0x00007f6883b24216 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdc1216)
 #1 0x00007f6883b21ec0 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdbeec0)
 #2 0x00007f6883b235f4 llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdc05f4)
 #3 0x00007f6883a7123e (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e23e)
 #4 0x00007f6883a711fb (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e1fb)
 #5 0x00007f6883b1e707 llvm::sys::Process::Exit(int, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdbb707)
 #6 0x00005617f30c93c3 (/usr/lib/llvm-19/bin/clang+0x133c3)
 #7 0x00007f6883a7ed0f llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd1bd0f)
 #8 0x00007f6884394fa0 llvm::SelectionDAGISel::isOrEquivalentToAdd(llvm::SDNode const*) const (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1631fa0)
 #9 0x00007f6884394498 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1631498)
#10 0x00007f68868a67b5 (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x3b437b5)
#11 0x00007f688438bcaf llvm::SelectionDAGISel::DoInstructionSelection() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1628caf)
#12 0x00007f688438b391 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1628391)
#13 0x00007f688438a5fe llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x16275fe)
#14 0x00007f68843885ee llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x16255ee)
#15 0x00007f688689c2af (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x3b392af)
#16 0x00007f6883ef3fb7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1190fb7)
#17 0x00007f6883c73e1f llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf10e1f)
#18 0x00007f6883c797c3 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf167c3)
#19 0x00007f6883c74534 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf11534)
#20 0x00007f688c11ad60 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, 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*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x1c5ed60)
#21 0x00007f688c4af0c9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x1ff30c9)
#22 0x00007f688b06c076 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0xbb0076)
#23 0x00007f688cf69825 clang::FrontendAction::Execute() (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2aad825)
#24 0x00007f688cee50d4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2a290d4)
#25 0x00007f688cfe2f7e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2b26f7e)
#26 0x00005617f30c8fad cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-19/bin/clang+0x12fad)
#27 0x00005617f30c6075 (/usr/lib/llvm-19/bin/clang+0x10075)
#28 0x00007f688cb75439 (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x26b9439)
#29 0x00007f6883a711dc llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e1dc)
#30 0x00007f688cb74dfe clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x26b8dfe)
#31 0x00007f688cb3c901 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2680901)
#32 0x00007f688cb3cb4e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2680b4e)
#33 0x00007f688cb596cc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x269d6cc)
#34 0x00005617f30c59e5 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-19/bin/clang+0xf9e5)
#35 0x00005617f30d3556 main (/usr/lib/llvm-19/bin/clang+0x1d556)
#36 0x00007f6881f5dc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#37 0x00005617f30c2bfa _start (/usr/lib/llvm-19/bin/clang+0xcbfa)
clang-19: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 19.0.0 (++20240301064251+dd426fa5f931-1~exp1~20240301184412.1845)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
clang-19: note: diagnostic msg: 
********************

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

********************
@EugeneZelenko EugeneZelenko added backend:X86 crash Prefer [crash-on-valid] or [crash-on-invalid] and removed new issue labels May 16, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented May 16, 2024

@llvm/issue-subscribers-backend-x86

Author: Anonymous (iamanonymouscs)

Clang-19 crashed when using builtin_preserve_access_index() with -g

Compiler explorer: https://godbolt.org/z/csM7Gqbar

$cat mutant.c
struct {
  int a;
} b;
int c() { return __builtin_preserve_access_index(b.a); }

$clang-19 -g -c mutant.c
fatal error: error in backend: Cannot select: intrinsic %llvm.preserve.struct.access.index
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: clang-19 -g mutant.c -c
1.      &lt;eof&gt; parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'mutant.c'.
4.      Running pass 'X86 DAG-&gt;DAG Instruction Selection' on function '@<!-- -->c'
 #<!-- -->0 0x00007f6883b24216 llvm::sys::PrintStackTrace(llvm::raw_ostream&amp;, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdc1216)
 #<!-- -->1 0x00007f6883b21ec0 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdbeec0)
 #<!-- -->2 0x00007f6883b235f4 llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdc05f4)
 #<!-- -->3 0x00007f6883a7123e (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e23e)
 #<!-- -->4 0x00007f6883a711fb (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e1fb)
 #<!-- -->5 0x00007f6883b1e707 llvm::sys::Process::Exit(int, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xdbb707)
 #<!-- -->6 0x00005617f30c93c3 (/usr/lib/llvm-19/bin/clang+0x133c3)
 #<!-- -->7 0x00007f6883a7ed0f llvm::report_fatal_error(llvm::Twine const&amp;, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd1bd0f)
 #<!-- -->8 0x00007f6884394fa0 llvm::SelectionDAGISel::isOrEquivalentToAdd(llvm::SDNode const*) const (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1631fa0)
 #<!-- -->9 0x00007f6884394498 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1631498)
#<!-- -->10 0x00007f68868a67b5 (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x3b437b5)
#<!-- -->11 0x00007f688438bcaf llvm::SelectionDAGISel::DoInstructionSelection() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1628caf)
#<!-- -->12 0x00007f688438b391 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1628391)
#<!-- -->13 0x00007f688438a5fe llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x16275fe)
#<!-- -->14 0x00007f68843885ee llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x16255ee)
#<!-- -->15 0x00007f688689c2af (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x3b392af)
#<!-- -->16 0x00007f6883ef3fb7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0x1190fb7)
#<!-- -->17 0x00007f6883c73e1f llvm::FPPassManager::runOnFunction(llvm::Function&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf10e1f)
#<!-- -->18 0x00007f6883c797c3 llvm::FPPassManager::runOnModule(llvm::Module&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf167c3)
#<!-- -->19 0x00007f6883c74534 llvm::legacy::PassManagerImpl::run(llvm::Module&amp;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xf11534)
#<!-- -->20 0x00007f688c11ad60 clang::EmitBackendOutput(clang::DiagnosticsEngine&amp;, clang::HeaderSearchOptions const&amp;, clang::CodeGenOptions const&amp;, clang::TargetOptions const&amp;, clang::LangOptions const&amp;, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr&lt;llvm::vfs::FileSystem&gt;, std::unique_ptr&lt;llvm::raw_pwrite_stream, std::default_delete&lt;llvm::raw_pwrite_stream&gt;&gt;, clang::BackendConsumer*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x1c5ed60)
#<!-- -->21 0x00007f688c4af0c9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&amp;) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x1ff30c9)
#<!-- -->22 0x00007f688b06c076 clang::ParseAST(clang::Sema&amp;, bool, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0xbb0076)
#<!-- -->23 0x00007f688cf69825 clang::FrontendAction::Execute() (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2aad825)
#<!-- -->24 0x00007f688cee50d4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&amp;) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2a290d4)
#<!-- -->25 0x00007f688cfe2f7e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2b26f7e)
#<!-- -->26 0x00005617f30c8fad cc1_main(llvm::ArrayRef&lt;char const*&gt;, char const*, void*) (/usr/lib/llvm-19/bin/clang+0x12fad)
#<!-- -->27 0x00005617f30c6075 (/usr/lib/llvm-19/bin/clang+0x10075)
#<!-- -->28 0x00007f688cb75439 (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x26b9439)
#<!-- -->29 0x00007f6883a711dc llvm::CrashRecoveryContext::RunSafely(llvm::function_ref&lt;void ()&gt;) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xd0e1dc)
#<!-- -->30 0x00007f688cb74dfe clang::driver::CC1Command::Execute(llvm::ArrayRef&lt;std::optional&lt;llvm::StringRef&gt;&gt;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt;*, bool*) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x26b8dfe)
#<!-- -->31 0x00007f688cb3c901 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&amp;, clang::driver::Command const*&amp;, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2680901)
#<!-- -->32 0x00007f688cb3cb4e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&amp;, llvm::SmallVectorImpl&lt;std::pair&lt;int, clang::driver::Command const*&gt;&gt;&amp;, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x2680b4e)
#<!-- -->33 0x00007f688cb596cc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&amp;, llvm::SmallVectorImpl&lt;std::pair&lt;int, clang::driver::Command const*&gt;&gt;&amp;) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.0+0x269d6cc)
#<!-- -->34 0x00005617f30c59e5 clang_main(int, char**, llvm::ToolContext const&amp;) (/usr/lib/llvm-19/bin/clang+0xf9e5)
#<!-- -->35 0x00005617f30d3556 main (/usr/lib/llvm-19/bin/clang+0x1d556)
#<!-- -->36 0x00007f6881f5dc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#<!-- -->37 0x00005617f30c2bfa _start (/usr/lib/llvm-19/bin/clang+0xcbfa)
clang-19: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 19.0.0 (++20240301064251+dd426fa5f931-1~exp1~20240301184412.1845)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
clang-19: note: diagnostic msg: 
********************

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:X86 crash Prefer [crash-on-valid] or [crash-on-invalid]
Projects
None yet
Development

No branches or pull requests

3 participants