Skip to content

abort: Unsupported regclass to store #9507

@llvmbot

Description

@llvmbot
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

  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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:SystemZbugzillaIssues migrated from bugzillawontfixIssue is real, but we can't or won't fix it. Not invalid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions