[PATCH] D17068: [mips][microMIPS] Fix for "Cannot copy registers" assertion
Hrvoje Varga via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 8 23:26:11 PST 2016
hvarga added a comment.
I am experiencing an issue with one of the test cases when I rebase master.
I have pinpointed that patch http://reviews.llvm.org/D15420 triggers following error in `micromips-addiu.ll`:
Unexpected call instruction for microMIPS.
UNREACHABLE executed at /home/rtrk/Projects/LLVM/llvm-osijek/lib/Target/Mips/MipsDelaySlotFiller.cpp:563!
#0 0x00000000018d19a7 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Support/Unix/Signals.inc:322:0
#1 0x00000000018d1cbc PrintStackTraceSignalHandler(void*) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Support/Unix/Signals.inc:380:0
#2 0x00000000018d03d4 llvm::sys::RunSignalHandlers() /home/rtrk/Projects/LLVM/llvm-osijek/lib/Support/Signals.cpp:44:0
#3 0x00000000018d14ce SignalHandler(int) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Support/Unix/Signals.inc:210:0
#4 0x00002b307b2f9340 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10340)
#5 0x00002b307bf76cc9 gsignal /build/eglibc-3GlaMS/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#6 0x00002b307bf7a0d8 abort /build/eglibc-3GlaMS/eglibc-2.19/stdlib/abort.c:91:0
#7 0x0000000001878c23 bindingsErrorHandler(void*, std::string const&, bool) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Support/ErrorHandling.cpp:126:0
#8 0x0000000000dc3db4 getEquivalentCallShort(int) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Target/Mips/MipsDelaySlotFiller.cpp:565:0
#9 0x0000000000dc3fc9 (anonymous namespace)::Filler::runOnMachineBasicBlock(llvm::MachineBasicBlock&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Target/Mips/MipsDelaySlotFiller.cpp:604:0
#10 0x0000000000dc2726 (anonymous namespace)::Filler::runOnMachineFunction(llvm::MachineFunction&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/Target/Mips/MipsDelaySlotFiller.cpp:181:0
#11 0x000000000119b0b9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/CodeGen/MachineFunctionPass.cpp:44:0
#12 0x00000000014b2fe6 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/IR/LegacyPassManager.cpp:1550:0
#13 0x00000000014b3179 llvm::FPPassManager::runOnModule(llvm::Module&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/IR/LegacyPassManager.cpp:1571:0
#14 0x00000000014b3514 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/IR/LegacyPassManager.cpp:1627:0
#15 0x00000000014b3c64 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/IR/LegacyPassManager.cpp:1730:0
#16 0x00000000014b3ea5 llvm::legacy::PassManager::run(llvm::Module&) /home/rtrk/Projects/LLVM/llvm-osijek/lib/IR/LegacyPassManager.cpp:1762:0
#17 0x0000000000af6ec3 compileModule(char**, llvm::LLVMContext&) /home/rtrk/Projects/LLVM/llvm-osijek/tools/llc/llc.cpp:408:0
#18 0x0000000000af5c98 main /home/rtrk/Projects/LLVM/llvm-osijek/tools/llc/llc.cpp:211:0
#19 0x00002b307bf61ec5 __libc_start_main /build/eglibc-3GlaMS/eglibc-2.19/csu/libc-start.c:321:0
#20 0x0000000000af4539 _start (/home/rtrk/Projects/LLVM/llvm-osijek-build/bin/llc+0xaf4539)
Stack dump:
0. Program arguments: /home/rtrk/Projects/LLVM/llvm-osijek-build/./bin/llc -march=mips -mcpu=mips64r6 -mattr=+micromips -relocation-model=pic -O3
1. Running pass 'Function Pass Manager' on module '<stdin>'.
2. Running pass 'Mips Delay Slot Filler' on function '@main'
This error only happens in the case of `-mcpu=mips64r6 -mattr=+micromips` and only in `micromips-addiu.ll`. We are probably missing something for microMIPS64r6. So before I commit I need to see what is the problem here.
http://reviews.llvm.org/D17068
More information about the llvm-commits
mailing list