Link with the common stub routines, and remove the partial set of stubs that were defined in the front-end. With this, the fortran compiler builds, but dies when compiling libgfortran:
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 Index: gcc.llvm.master/gcc/fortran/Make-lang.in =================================================================== --- gcc.llvm.master.orig/gcc/fortran/Make-lang.in 2007-01-17 21:41:50.000000000 +0100 +++ gcc.llvm.master/gcc/fortran/Make-lang.in 2007-01-17 21:47:04.000000000 +0100 @@ -103,12 +103,15 @@ -rm -f gfortran-cross$(exeext) cp gfortran$(exeext) gfortran-cross$(exeext) +# Language-independent object files. +F95_BACKEND = $(BACKEND) attribs.o stub-objc.o stub-c.o + # The compiler itself is called f951. f951$(exeext): $(F95_OBJS) \ - $(BACKEND) $(LIBDEPS) + $(F95_BACKEND) $(LIBDEPS) # APPLE LOCAL LLVM $(LINKCC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ - $(F95_OBJS) $(BACKEND) $(F95_LIBS) + $(F95_OBJS) $(F95_BACKEND) $(F95_LIBS) $(C_STUBS) gt-fortran-f95-lang.h gtype-fortran.h : s-gtype; @true gt-fortran-trans-decl.h gt-fortran-trans.h : s-gtype; @true Index: gcc.llvm.master/gcc/fortran/f95-lang.c =================================================================== --- gcc.llvm.master.orig/gcc/fortran/f95-lang.c 2007-01-17 21:41:50.000000000 +0100 +++ gcc.llvm.master/gcc/fortran/f95-lang.c 2007-01-17 21:47:04.000000000 +0100 @@ -154,21 +154,6 @@ /* APPLE LOCAL disable_typechecking_for_spec_flag */ int disable_typechecking_for_spec_flag = 0; -/* APPLE LOCAL begin CW asm blocks */ -/* Dummies needed because we use them from cpplib, yuck. */ -int flag_iasm_blocks; -int iasm_state; -int iasm_in_operands; -/* APPLE LOCAL end CW asm blocks */ - -/* APPLE LOCAL begin 4174833 */ -tree -objc_is_class_name (tree ARG_UNUSED (arg)) -{ - return 0; -} - -/* APPLE LOCAL end 4174833 */ /* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function that have names. Here so we can clear out their names' definitions at the end of the function. */ Index: gcc.llvm.master/gcc/fortran/trans-types.c =================================================================== --- gcc.llvm.master.orig/gcc/fortran/trans-types.c 2007-01-17 21:41:50.000000000 +0100 +++ gcc.llvm.master/gcc/fortran/trans-types.c 2007-01-17 21:47:04.000000000 +0100 @@ -1752,18 +1752,4 @@ /* APPLE LOCAL constant cfstrings */ struct cpp_reader* parse_in; -/* APPLE LOCAL begin AltiVec */ -tree -build_stmt (enum tree_code code ATTRIBUTE_UNUSED, ...) -{ - gcc_assert(0); -} - -void -store_init_value (tree decl ATTRIBUTE_UNUSED, tree init ATTRIBUTE_UNUSED) -{ - gcc_assert(0); -} -/* APPLE LOCAL end AltiVec */ - #include "gt-fortran-trans-types.h" _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits