| Issue |
53168
|
| Summary |
clang crashes at -O1 and -Os on x86_64-linux-gnu in 'Simple Register Coalescing' pass: Assertion `isReg() && "This is not a register operand!"' failed
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
zhendongsu
|
It affects clang 9.* and later.
```
[514] % clangtk -v
clang version 14.0.0 (https://github.com/llvm/llvm-project.git bf5f2354fa6e3f31a1acea75a229fee54359e279)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
[515] %
[515] % clangtk -O0 -c small.c
[516] %
[516] % clangtk -O1 -c small.c
clangtk: /local/suz-local/software/clangbuild/llvm-project/llvm/include/llvm/CodeGen/MachineOperand.h:361: llvm::Register llvm::MachineOperand::getReg() const: Assertion `isReg() && "This is not a register operand!"' 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: clangtk -I/usr/local/include/csmith -I/local/suz-local/software/local/include -O1 -c small.c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'small.c'.
4. Running pass 'Simple Register Coalescing' on function '@fn'
#0 0x0000564438796e3f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x0000564438794c40 llvm::sys::CleanupOnSignal(unsigned long) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x3a40c40)
#2 0x00005644386cdb18 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007efd71755980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#4 0x00007efd70406fb7 raise /build/glibc-S9d2JN/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#5 0x00007efd70408921 abort /build/glibc-S9d2JN/glibc-2.27/stdlib/abort.c:81:0
#6 0x00007efd703f848a __assert_fail_base /build/glibc-S9d2JN/glibc-2.27/assert/assert.c:89:0
#7 0x00007efd703f8502 (/lib/x86_64-linux-gnu/libc.so.6+0x30502)
#8 0x0000564437b7f17a isMoveInstr(llvm::TargetRegisterInfo const&, llvm::MachineInstr const*, llvm::Register&, llvm::Register&, unsigned int&, unsigned int&) (.constprop.592) RegisterCoalescer.cpp:0:0
#9 0x0000564437b80226 llvm::CoalescerPair::setRegisters(llvm::MachineInstr const*) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x2e2c226)
#10 0x0000564437b8d74d (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&) (.constprop.562) RegisterCoalescer.cpp:0:0
#11 0x0000564437b9044b (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#12 0x0000564437b9308b (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#13 0x00005644379fc576 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x2ca8576)
#14 0x0000564437eca1e6 llvm::FPPassManager::runOnFunction(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x31761e6)
#15 0x0000564437eca539 llvm::FPPassManager::runOnModule(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x3176539)
#16 0x0000564437ecb330 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x3177330)
#17 0x0000564438ac9111 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> >) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x3d75111)
#18 0x00005644397b144b clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x4a5d44b)
#19 0x000056443a6968b9 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x59428b9)
#20 0x00005644397aff58 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x4a5bf58)
#21 0x000056443914ecb1 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x43facb1)
#22 0x00005644390ea89a clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x439689a)
#23 0x0000564439218a93 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x44c4a93)
#24 0x0000564436135edc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x13e1edc)
#25 0x0000564436131279 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#26 0x0000564438f8fef5 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
#27 0x00005644386ce103 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x397a103)
#28 0x0000564438f92286 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x423e286)
#29 0x0000564438f672aa clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x42132aa)
#30 0x0000564438f67f3f clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x4213f3f)
#31 0x0000564438f701fa clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x421c1fa)
#32 0x000056443605a6ff main (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x13066ff)
#33 0x00007efd703e9bf7 __libc_start_main /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:344:0
#34 0x0000564436130dea _start (/local/suz-local/software/local/clang-trunk/bin/clang-14+0x13dcdea)
clang-14: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git bf5f2354fa6e3f31a1acea75a229fee54359e279)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/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/small-67cfbb.c
clang-14: note: diagnostic msg: /tmp/small-67cfbb.sh
clang-14: note: diagnostic msg:
********************
[517] %
[517] % cat small.c
int printf(const char *, ...);
struct {
int a : 4;
} b;
int c, d, e, f, g, j, k, h;
void fn() {
int m = 0, i;
while (i) {
int n, o;
n = e;
o = m;
if (j)
L:
m = m / ~0;
if (e) {
if (f)
printf("0");
c = n / m;
break;
}
m = o;
d = 0;
}
for (i = 0; i < 5; i++)
if (g) {
printf("%d", b.a);
goto L;
}
int q = 0;
if (!c)
return;
if (k)
for (;;)
;
printf("%d", h);
int r = 0, s = 0;
goto L;
}
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs