-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Description
| Bugzilla Link | 9135 |
| Resolution | WONTFIX |
| Resolved on | Nov 25, 2011 14:14 |
| Version | trunk |
| OS | Linux |
| Reporter | LLVM Bugzilla Contributor |
| CC | @asl,@d0k |
Extended Description
This was produced by a very large program and failed in a large function with nested switch statements. The test case is very large, so in the spirt of Fermat, I have omitted it. It is curious that the *.ll only aborts if it is first optimized by "opt -std-compile-opts".
When I gdb llc, I can see that SystemZInstrInfo::storeRegToStackSlot is being called with a TargetRegisterClass of CCR (i.e. the PSW).
Here is the abort backtrace:
Unsupported regclass to store
UNREACHABLE executed at SystemZInstrInfo.cpp:63!
0 llc 0x0000000000ea643f
1 llc 0x0000000000ea6f7a
2 libpthread.so.0 0x0000003f4420f3c0
3 libc.so.6 0x0000003f43a34085 gsignal + 53
4 libc.so.6 0x0000003f43a35a36 abort + 390
5 llc 0x0000000000e90d24 llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) + 356
6 llc 0x00000000005f9a05
7 llc 0x0000000000b9b48c llvm::TargetInstrInfo::foldMemoryOperand(llvm::ilist_iteratorllvm::MachineInstr, llvm::SmallVectorImpl const&, int) const + 1068
8 llc 0x0000000000bf8006 llvm::LiveIntervals::tryFoldMemoryOperand(llvm::MachineInstr*&, llvm::VirtRegMap&, llvm::MachineInstr*, llvm::SlotIndex, llvm::SmallVector<unsigned int, 2u>&, bool, int, unsigned int) + 438
9 llc 0x0000000000bf840a llvm::LiveIntervals::rewriteInstructionForSpills(llvm::LiveInterval const&, llvm::VNInfo const*, bool, llvm::SlotIndex, llvm::SlotIndex, llvm::MachineInstr*, llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, int, bool, bool, bool, bool, llvm::VirtRegMap&, llvm::TargetRegisterClass const*, llvm::SmallVector<int, 4u>&, llvm::MachineLoopInfo const*, unsigned int&, unsigned int, bool&, bool&, llvm::DenseMap<unsigned int, unsigned int, llvm::DenseMapInfo, llvm::DenseMapInfo >&, std::vector<llvm::LiveInterval*, std::allocatorllvm::LiveInterval* >&) + 746
10 llc 0x0000000000bf9ffc llvm::LiveIntervals::rewriteInstructionsForSpills(llvm::LiveInterval const&, bool, llvm::LiveRange const*&, llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, int, bool, bool, bool, bool, llvm::VirtRegMap&, llvm::TargetRegisterClass const*, llvm::SmallVector<int, 4u>&, llvm::MachineLoopInfo const*, llvm::BitVector&, llvm::DenseMap<unsigned int, std::vector<llvm::LiveIntervals::SRInfo, std::allocatorllvm::LiveIntervals::SRInfo >, llvm::DenseMapInfo, llvm::DenseMapInfo<std::vector<llvm::LiveIntervals::SRInfo, std::allocatorllvm::LiveIntervals::SRInfo > > >&, llvm::BitVector&, llvm::DenseMap<unsigned int, std::vector<llvm::LiveIntervals::SRInfo, std::allocatorllvm::LiveIntervals::SRInfo >, llvm::DenseMapInfo, llvm::DenseMapInfo<std::vector<llvm::LiveIntervals::SRInfo, std::allocatorllvm::LiveIntervals::SRInfo > > >&, llvm::DenseMap<unsigned int, unsigned int, llvm::DenseMapInfo, llvm::DenseMapInfo >&, std::vector<llvm::LiveInterval*, std::allocatorllvm::LiveInterval* >&) + 3020
11 llc 0x0000000000bfbfa6 llvm::LiveIntervals::addIntervalsForSpills(llvm::LiveInterval const&, llvm::SmallVectorImplllvm::LiveInterval* const&, llvm::MachineLoopInfo const*, llvm::VirtRegMap&) + 3078
12 llc 0x0000000000b6a14f
13 llc 0x0000000000b155d4
14 llc 0x0000000000b18dff
15 llc 0x0000000000b1a05d
16 llc 0x0000000000ddfc97 llvm::FPPassManager::runOnFunction(llvm::Function&) + 599
17 llc 0x0000000000ddfd5b llvm::FPPassManager::runOnModule(llvm::Module&) + 75
18 llc 0x0000000000ddf827 llvm::MPPassManager::runOnModule(llvm::Module&) + 551
19 llc 0x0000000000ddf977 llvm::PassManagerImpl::run(llvm::Module&) + 167
20 llc 0x000000000053ea3d main + 4701
21 libc.so.6 0x0000003f43a1ee7d __libc_start_main + 253
22 llc 0x000000000053c9a9
Stack dump:
0. Program arguments: /home/bgl/work/llvm/Release+Asserts/bin/llc -march=systemz main-s390x.bc
- Running pass 'Function Pass Manager' on module 'main-s390x.bc'.
- Running pass 'Linear Scan Register Allocator' on function '@lex_Next'
Aborted
I also have the output of "llc -march=systemz -debug" if that would be helpful.