[LLVMbugs] [Bug 9135] New: abort: Unsupported regclass to store

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Feb 3 12:26:13 PST 2011


http://llvm.org/bugs/show_bug.cgi?id=9135

           Summary: abort: Unsupported regclass to store
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: SystemZ
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: bagel99 at gmail.com
                CC: llvmbugs at cs.uiuc.edu


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_iterator<llvm::MachineInstr>,
llvm::SmallVectorImpl<unsigned int> 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<unsigned int>, llvm::DenseMapInfo<unsigned int> >&,
std::vector<llvm::LiveInterval*, std::allocator<llvm::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::allocator<llvm::LiveIntervals::SRInfo> >, llvm::DenseMapInfo<unsigned
int>, llvm::DenseMapInfo<std::vector<llvm::LiveIntervals::SRInfo,
std::allocator<llvm::LiveIntervals::SRInfo> > > >&, llvm::BitVector&,
llvm::DenseMap<unsigned int, std::vector<llvm::LiveIntervals::SRInfo,
std::allocator<llvm::LiveIntervals::SRInfo> >, llvm::DenseMapInfo<unsigned
int>, llvm::DenseMapInfo<std::vector<llvm::LiveIntervals::SRInfo,
std::allocator<llvm::LiveIntervals::SRInfo> > > >&, llvm::DenseMap<unsigned
int, unsigned int, llvm::DenseMapInfo<unsigned int>,
llvm::DenseMapInfo<unsigned int> >&, std::vector<llvm::LiveInterval*,
std::allocator<llvm::LiveInterval*> >&) + 3020
11 llc             0x0000000000bfbfa6
llvm::LiveIntervals::addIntervalsForSpills(llvm::LiveInterval const&,
llvm::SmallVectorImpl<llvm::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 
1.    Running pass 'Function Pass Manager' on module 'main-s390x.bc'.
2.    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.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list