[llvm-bugs] [Bug 51313] New: ARM crash when using `__sync_bool_compare_and_swap`
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Aug 2 21:39:57 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=51313
Bug ID: 51313
Summary: ARM crash when using `__sync_bool_compare_and_swap`
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: ARM
Assignee: unassignedbugs at nondot.org
Reporter: nathan at lanza.io
CC: llvm-bugs at lists.llvm.org, smithp352 at googlemail.com,
Ties.Stuij at arm.com
With the input file `input.c`
```
struct {
int h;
int i;
int j;
} g;
k() {
__sync_bool_compare_and_swap(&g.i, 0, 1);
if (g.j)
;
}
```
and compilation:
```
$ clang -cc1 -triple thumbv7-none-linux-android16 -emit-obj input.c
```
Here is the crash:
```
clang:
/home/lanza/Projects/llvm-project/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:1651:
bool (anonymous
namespace)::ARMExpandPseudo::ExpandCMP_SWAP(llvm::MachineBasicBlock &,
MachineBasicBlock::iterator, unsigned int, unsigned int, unsigned int,
MachineBasicBlock::iterator &): Assertion
`ARM::tGPRRegClass.contains(DesiredReg) && "DesiredReg used for UXT op must be
tGPR"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash
backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang -cc1 -triple thumbv7-none-linux-android16
-emit-obj test.c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.c'.
4. Running pass 'ARM pseudo instruction expansion pass' on function '@k'
#0 0x00007fdf5c19c4ea llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
/home/lanza/Projects/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11
#1 0x00007fdf5c19c69b PrintStackTraceSignalHandler(void*)
/home/lanza/Projects/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
#2 0x00007fdf5c19aeb3 llvm::sys::RunSignalHandlers()
/home/lanza/Projects/llvm-project/llvm/lib/Support/Signals.cpp:97:5
#3 0x00007fdf5c19ccd5 SignalHandler(int)
/home/lanza/Projects/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007fdf639bca20 __restore_rt (/lib64/libpthread.so.0+0x13a20)
#5 0x00007fdf5ba062a2 raise (/lib64/libc.so.6+0x3d2a2)
#6 0x00007fdf5b9ef8a4 abort (/lib64/libc.so.6+0x268a4)
#7 0x00007fdf5b9ef789 _nl_load_domain.cold (/lib64/libc.so.6+0x26789)
#8 0x00007fdf5b9fea16 (/lib64/libc.so.6+0x35a16)
#9 0x00007fdf63f0456e (anonymous
namespace)::ARMExpandPseudo::ExpandCMP_SWAP(llvm::MachineBasicBlock&,
llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, unsigned int,
unsigned int, unsigned int,
llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&)
/home/lanza/Projects/llvm-project/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:1652:3
#10 0x00007fdf63effe2b (anonymous
namespace)::ARMExpandPseudo::ExpandMI(llvm::MachineBasicBlock&,
llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>,
llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&)
/home/lanza/Projects/llvm-project/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:2938:9
#11 0x00007fdf63efa167 (anonymous
namespace)::ARMExpandPseudo::ExpandMBB(llvm::MachineBasicBlock&)
/home/lanza/Projects/llvm-project/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:3003:17
#12 0x00007fdf63ef9fad (anonymous
namespace)::ARMExpandPseudo::runOnMachineFunction(llvm::MachineFunction&)
/home/lanza/Projects/llvm-project/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:3021:17
#13 0x00007fdf62008f47
llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
/home/lanza/Projects/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:72:8
#14 0x00007fdf5d5cb98e llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/lanza/Projects/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1439:23
#15 0x00007fdf5d5d0752 llvm::FPPassManager::runOnModule(llvm::Module&)
/home/lanza/Projects/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1485:16
#16 0x00007fdf5d5cc279 (anonymous
namespace)::MPPassManager::runOnModule(llvm::Module&)
/home/lanza/Projects/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1554:23
#17 0x00007fdf5d5cbded llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/lanza/Projects/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:542:16
#18 0x00007fdf5d5d0a31 llvm::legacy::PassManager::run(llvm::Module&)
/home/lanza/Projects/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1681:3
#19 0x00007fdf62a8a872 (anonymous
namespace)::EmitAssemblyHelper::EmitAssemblyWithNewPassManager(clang::BackendAction,
std::__1::unique_ptr<llvm::raw_pwrite_stream,
std::__1::default_delete<llvm::raw_pwrite_stream> >)
/home/lanza/Projects/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1501:3
#20 0x00007fdf62a883d7 clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::HeaderSearchOptions const&, clang::CodeGenOptions const&,
clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef,
llvm::Module*, clang::BackendAction,
std::__1::unique_ptr<llvm::raw_pwrite_stream,
std::__1::default_delete<llvm::raw_pwrite_stream> >)
/home/lanza/Projects/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1660:5
#21 0x00007fdf630c86a7
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
/home/lanza/Projects/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:334:7
#22 0x00007fdf5702b671 clang::ParseAST(clang::Sema&, bool, bool)
/home/lanza/Projects/llvm-project/clang/lib/Parse/ParseAST.cpp:178:12
#23 0x00007fdf5f9c7bec clang::ASTFrontendAction::ExecuteAction()
/home/lanza/Projects/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1060:1
#24 0x00007fdf630c29b0 clang::CodeGenAction::ExecuteAction()
/home/lanza/Projects/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1045:5
#25 0x00007fdf5f9c75ec clang::FrontendAction::Execute()
/home/lanza/Projects/llvm-project/clang/lib/Frontend/FrontendAction.cpp:955:7
#26 0x00007fdf5f8e7d61
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
/home/lanza/Projects/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:974:23
#27 0x00007fdf63994c1e
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
/home/lanza/Projects/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:278:8
#28 0x0000000000237713 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) /home/lanza/Projects/llvm-project/clang/tools/driver/cc1_main.cpp:246:13
#29 0x000000000022a56b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
/home/lanza/Projects/llvm-project/clang/tools/driver/driver.cpp:338:5
#30 0x00000000002297a5 main
/home/lanza/Projects/llvm-project/clang/tools/driver/driver.cpp:409:5
#31 0x00007fdf5b9f0b75 __libc_start_main (/lib64/libc.so.6+0x27b75)
#32 0x0000000000228ffe _start
(/home/lanza/Projects/llvm-project/build/Debug/bin/clang-14+0x228ffe)
fish: Job 1, 'clang -cc1 -triple thumbv7-noneā¦' terminated by signal SIGABRT
(Abort)
```
The offending patch is https://reviews.llvm.org/D101898. Reverting it has my
company's toolchain working properly so far.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210803/92f65e86/attachment-0001.html>
More information about the llvm-bugs
mailing list