This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

libfuncs vs GC



Fixes some GC problems.  It looks like gofast.h and the sparc port were
converted, but somehow these were missed.

	* h8300.h (INIT_TARGET_OPTABS): Use init_one_optab instead of
	generating RTL directly.
	* mips.h (INIT_TARGET_OPTABS): Likewise.
	* mn10200.h (INIT_TARGET_OPTABS): Likewise.

Index: h8300/h8300.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/h8300/h8300.h,v
retrieving revision 1.17
diff -c -3 -p -r1.17 h8300.h
*** h8300.h	1999/09/07 05:48:31	1.17
--- h8300.h	1999/09/30 18:46:45
*************** extern int handle_pragma ();
*** 1388,1402 ****
  #define INIT_TARGET_OPTABS \
    do { \
      smul_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, MULHI3_LIBCALL);	\
      sdiv_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, DIVHI3_LIBCALL);	\
      udiv_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, UDIVHI3_LIBCALL);	\
      smod_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, MODHI3_LIBCALL);	\
      umod_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, UMODHI3_LIBCALL);	\
    } while (0)
  
  #define MOVE_RATIO 3
--- 1388,1402 ----
  #define INIT_TARGET_OPTABS \
    do { \
      smul_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (MULHI3_LIBCALL);		\
      sdiv_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (DIVHI3_LIBCALL);		\
      udiv_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (UDIVHI3_LIBCALL);		\
      smod_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (MODHI3_LIBCALL);		\
      umod_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (UMODHI3_LIBCALL);		\
    } while (0)
  
  #define MOVE_RATIO 3
Index: mips/mips.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/mips/mips.h,v
retrieving revision 1.68
diff -c -3 -p -r1.68 mips.h
*** mips.h	1999/09/24 02:01:08	1.68
--- mips.h	1999/09/30 18:46:54
*************** do									\
*** 4592,4650 ****
      else								\
        {									\
  	add_optab->handlers[(int) SFmode].libfunc =			\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_addsf3");		\
  	sub_optab->handlers[(int) SFmode].libfunc =			\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_subsf3");		\
  	smul_optab->handlers[(int) SFmode].libfunc =			\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_mulsf3");		\
  	flodiv_optab->handlers[(int) SFmode].libfunc =			\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_divsf3");		\
  									\
! 	eqsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_eqsf2");	\
! 	nesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_nesf2");	\
! 	gtsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_gtsf2");	\
! 	gesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_gesf2");	\
! 	ltsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_ltsf2");	\
! 	lesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__mips16_lesf2");	\
  									\
  	floatsisf_libfunc =						\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_floatsisf");		\
  	fixsfsi_libfunc =						\
! 	  gen_rtx (SYMBOL_REF, Pmode, "__mips16_fixsfsi");		\
  									\
  	if (TARGET_DOUBLE_FLOAT)					\
  	  {								\
  	    add_optab->handlers[(int) DFmode].libfunc =			\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_adddf3");		\
  	    sub_optab->handlers[(int) DFmode].libfunc =			\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_subdf3");		\
  	    smul_optab->handlers[(int) DFmode].libfunc =		\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_muldf3");		\
  	    flodiv_optab->handlers[(int) DFmode].libfunc =		\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_divdf3");		\
  									\
  	    extendsfdf2_libfunc =					\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_extendsfdf2");	\
  	    truncdfsf2_libfunc =					\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_truncdfsf2");	\
  									\
  	    eqdf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_eqdf2");		\
  	    nedf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_nedf2");		\
  	    gtdf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_gtdf2");		\
  	    gedf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_gedf2");		\
  	    ltdf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_ltdf2");		\
  	    ledf2_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_ledf2");		\
  									\
  	    floatsidf_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_floatsidf");	\
  	    fixdfsi_libfunc =						\
! 	      gen_rtx (SYMBOL_REF, Pmode, "__mips16_fixdfsi");		\
  	  }								\
        }									\
    }									\
--- 4592,4650 ----
      else								\
        {									\
  	add_optab->handlers[(int) SFmode].libfunc =			\
! 	  init_one_libfunc ("__mips16_addsf3");				\
  	sub_optab->handlers[(int) SFmode].libfunc =			\
! 	  init_one_libfunc ("__mips16_subsf3");				\
  	smul_optab->handlers[(int) SFmode].libfunc =			\
! 	  init_one_libfunc ("__mips16_mulsf3");				\
  	flodiv_optab->handlers[(int) SFmode].libfunc =			\
! 	  init_one_libfunc ("__mips16_divsf3");				\
  									\
! 	eqsf2_libfunc = init_one_libfunc ("__mips16_eqsf2");		\
! 	nesf2_libfunc = init_one_libfunc ("__mips16_nesf2");		\
! 	gtsf2_libfunc = init_one_libfunc ("__mips16_gtsf2");		\
! 	gesf2_libfunc = init_one_libfunc ("__mips16_gesf2");		\
! 	ltsf2_libfunc = init_one_libfunc ("__mips16_ltsf2");		\
! 	lesf2_libfunc = init_one_libfunc ("__mips16_lesf2");		\
  									\
  	floatsisf_libfunc =						\
! 	  init_one_libfunc ("__mips16_floatsisf");			\
  	fixsfsi_libfunc =						\
! 	  init_one_libfunc ("__mips16_fixsfsi");			\
  									\
  	if (TARGET_DOUBLE_FLOAT)					\
  	  {								\
  	    add_optab->handlers[(int) DFmode].libfunc =			\
! 	      init_one_libfunc ("__mips16_adddf3");			\
  	    sub_optab->handlers[(int) DFmode].libfunc =			\
! 	      init_one_libfunc ("__mips16_subdf3");			\
  	    smul_optab->handlers[(int) DFmode].libfunc =		\
! 	      init_one_libfunc ("__mips16_muldf3");			\
  	    flodiv_optab->handlers[(int) DFmode].libfunc =		\
! 	      init_one_libfunc ("__mips16_divdf3");			\
  									\
  	    extendsfdf2_libfunc =					\
! 	      init_one_libfunc ("__mips16_extendsfdf2");		\
  	    truncdfsf2_libfunc =					\
! 	      init_one_libfunc ("__mips16_truncdfsf2");			\
  									\
  	    eqdf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_eqdf2");			\
  	    nedf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_nedf2");			\
  	    gtdf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_gtdf2");			\
  	    gedf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_gedf2");			\
  	    ltdf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_ltdf2");			\
  	    ledf2_libfunc =						\
! 	      init_one_libfunc ("__mips16_ledf2");			\
  									\
  	    floatsidf_libfunc =						\
! 	      init_one_libfunc ("__mips16_floatsidf");			\
  	    fixdfsi_libfunc =						\
! 	      init_one_libfunc ("__mips16_fixdfsi");			\
  	  }								\
        }									\
    }									\
Index: mn10200/mn10200.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/mn10200/mn10200.h,v
retrieving revision 1.16
diff -c -3 -p -r1.16 mn10200.h
*** mn10200.h	1999/09/07 05:48:49	1.16
--- mn10200.h	1999/09/30 18:46:56
*************** do { char dstr[30];					\
*** 1051,1059 ****
  #define INIT_TARGET_OPTABS \
    do { \
      sdiv_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, DIVHI3_LIBCALL);	\
      smod_optab->handlers[(int) HImode].libfunc		\
!       = gen_rtx_SYMBOL_REF (Pmode, MODHI3_LIBCALL);	\
    } while (0)
  
  /* The assembler op to get a word.  */
--- 1051,1059 ----
  #define INIT_TARGET_OPTABS \
    do { \
      sdiv_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (DIVHI3_LIBCALL);		\
      smod_optab->handlers[(int) HImode].libfunc		\
!       = init_one_libfunc (MODHI3_LIBCALL);		\
    } while (0)
  
  /* The assembler op to get a word.  */




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]