Hi Anton,
> > 3-fortran.diff
> > Get fortran to compile: use the common stubs and rip out
> > the incomplete collection of dummy routines someone already put in.
> > With this patch, the fortran build dies at this point:
> >
> > cc1: llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:367: void
llvm::ScheduleDAG::AddOperand(llvm:
> > :MachineInstr*, llvm::SDOperand, unsigned int, const
llvm::TargetInstrDescriptor*, std::map<llvm::SDNode*, unsign
> > ed int, std::less<llvm::SDNode*>,
std::allocator<std::pair<llvm::SDNode* const, unsigned int> >
>&): Assertion `R
> > egMap->getRegClass(VReg) == RC && "Register class of
operand and regclass of use don't agree!"' failed.
> > ./../../gcc.llvm.master/libgfortran/runtime/environ.c:619: internal
compiler error: Aborted
> This looks like PR879. Will you try to build with -D__NO_MATH_INLINES and
check, whether the assertion still exists?
you are right: a build with -D__NO_MATH_INLINES does not trigger that assertion.
Instead it triggers this one later on:
llvm-convert.cpp:4243: static llvm::Constant*
TreeConstantToLLVM::Convert(tree_node*):
Assertion `((__extension__ ({ const tree __t = (exp); char const __c =
tree_code_type[(int)
(((enum tree_code) (__t)->common.code))]; if (!((__c) != tcc_type))
tree_class_check_failed
(__t, tcc_type, "../../gcc.llvm.master/gcc/llvm-convert.cpp", 4243,
__FUNCTION__); __t; })
->common.constant_flag) || ((enum tree_code) (exp)->common.code) ==
STRING_CST) &&
"Isn't a constant!"' failed.
libgfortran/intrinsics/selected_int_kind.f90: In function
'selected_int_kind':
libgfortran/intrinsics/selected_int_kind.f90:22: internal compiler error:
Aborted
Best wishes,
Duncan.