Exception Problems

Hi Anton & Duncan,

When I try to compile on Darwin now, I get this:

$ /Volumes/Gir/devel/llvm/llvm-gcc-4.0.obj/gcc/xgcc <options> -o eh_alloc.o

Assertion failed: (false && "Couldn't find the register class"), function getPhysicalRegisterRegClass, file /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp, line 269.
../../../../../llvm-gcc-4.0.src/libstdc++-v3/libsupc++/eh_alloc.cc:182: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://llvm.org/bugs&gt; for instructions.
make[7]: *** [eh_alloc.lo] Error 1
make[6]: *** [all-recursive] Error 1
make[5]: *** [all] Error 2
make[4]: *** [multi-do] Error 1
make[3]: *** [all-multi] Error 2
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-target-libstdc++-v3] Error 2

Here's the backtrace:

(gdb) bt
#0 0x963d995a in __kill ()
#1 0x963d994d in kill$UNIX2003 ()
#2 0x9644f006 in raise ()
#3 0x9645c8ff in abort ()
#4 0x964501a7 in __assert_rtn ()
#5 0x007c2891 in getPhysicalRegisterRegClass (MRI=0x42010504, VT=4, reg=79) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:269
#6 0x007c5218 in llvm::ScheduleDAG::EmitCopyFromReg (this=0x41a25a50, Node=0x41a17f60, ResNo=0, SrcReg=79, VRBaseMap=@0xbfffe218) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:304
#7 0x007c5938 in llvm::ScheduleDAG::EmitNode (this=0x41a25a50, Node=0x41a17f60, VRBaseMap=@0xbfffe218) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:716
#8 0x007c5f00 in llvm::ScheduleDAG::EmitSchedule (this=0x41a25a50) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:807
#9 0x007cdb46 in (anonymous namespace)::ScheduleDAGRRList::Schedule (this=0x41a25a50) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:113
#10 0x007c2a6a in llvm::ScheduleDAG::Run (this=0x41a25a50) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:834
#11 0x007f820e in llvm::SelectionDAGISel::ScheduleAndEmitDAG (this=0x42025600, DAG=@0xbfffe47c) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4847
#12 0x0067fcca in (anonymous namespace)::X86DAGToDAGISel::InstructionSelectBasicBlock (this=0x42025600, DAG=@0xbfffe47c) at /Volumes/Gir/devel/llvm/llvm.src/lib/Target/X86/X86ISelDAGToDAG.cpp:483
#13 0x007f80cc in llvm::SelectionDAGISel::CodeGenAndEmitDAG (this=0x42025600, DAG=@0xbfffe47c) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4623
#14 0x0080bd86 in llvm::SelectionDAGISel::SelectBasicBlock (this=0x42025600, LLVMBB=0x41a22080, MF=@0x41a203b0, FuncInfo=@0xbfffe718) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4641
#15 0x0080d35b in llvm::SelectionDAGISel::runOnFunction (this=0x42025600, Fn=@0x41a1dc40) at /Volumes/Gir/devel/llvm/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:4342
#16 0x006b5fd3 in (anonymous namespace)::X86DAGToDAGISel::runOnFunction (this=0x42025600, Fn=@0x41a1dc40) at /Volumes/Gir/devel/llvm/llvm.src/lib/Target/X86/X86ISelDAGToDAG.cpp:122
#17 0x00a6d7b8 in llvm::FPPassManager::runOnFunction (this=0x41a0e500, F=@0x41a1dc40) at /Volumes/Gir/devel/llvm/llvm.src/lib/VMCore/PassManager.cpp:1168
#18 0x00a6da10 in llvm::FunctionPassManagerImpl::run (this=0x41a0e400, F=@0x41a1dc40) at /Volumes/Gir/devel/llvm/llvm.src/lib/VMCore/PassManager.cpp:1126
#19 0x00a6db8d in llvm::FunctionPassManager::run (this=0x41a0e3f0, F=@0x41a1dc40) at /Volumes/Gir/devel/llvm/llvm.src/lib/VMCore/PassManager.cpp:1071
#20 0x00567fd5 in llvm_asm_file_end () at ../../llvm-gcc-4.0.src/gcc/llvm-backend.cpp:535
#21 0x00525fc1 in do_compile () at ../../llvm-gcc-4.0.src/gcc/toplev.c:1175
#22 0x005262f4 in toplev_main (argc=0, argv=0xbfffea28) at ../../llvm-gcc-4.0.src/gcc/toplev.c:2419
#23 0x00002136 in start ()

Any ideas? :slight_smile:

-bw

It's trying to find the register class for register #79 and VT #4. You can look up 79 from X86GenRegisterNames.inc (it's RDX), VT #4 is MVT::i32. So scheduler blows up. This is probably a upstream lowering bug.

Evan

Evan,

It's trying to find the register class for register #79 and VT #4. You
can look up 79 from X86GenRegisterNames.inc (it's RDX), VT #4 is
MVT::i32. So scheduler blows up. This is probably a upstream lowering
bug.

Yes. Exactly. I've described in bugzilla a reason. Could you please
comment?