This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
libfuncs vs GC
- To: gcc-patches at gcc dot gnu dot org
- Subject: libfuncs vs GC
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Thu, 30 Sep 1999 12:43:47 -0600
- Reply-To: law at cygnus dot com
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. */