Convert many single variables to arrays
authorBernd Schmidt <bernds@cygnus.co.uk>
Sat, 4 Sep 1999 22:08:44 +0000 (22:08 +0000)
committerBernd Schmidt <crux@gcc.gnu.org>
Sat, 4 Sep 1999 22:08:44 +0000 (22:08 +0000)
From-SVN: r29110

gcc/ChangeLog
gcc/expr.h
gcc/optabs.c

index 2178ca994dcf6236f1568a6fb01c82ce791be12b..6049ab5f68abb6b9face1b52c46aef91414908ea 100644 (file)
@@ -1,3 +1,13 @@
+Sat Sep  4 22:53:13 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * expr.h: Collapse individual optab and libfunc vars to arrays.
+       (optab_index, libfunc_index): New enumerations.
+       (optab_table, libfunc_table): New arrays.
+       Add accessor macros for both.
+
+       * optabs.c (optab_table, libfunc_table): New.
+       Delete declarations for individual optab and libfunc vars.
+
 Sat Sep  4 12:57:17 1999  Richard Henderson  <rth@cygnus.com>
 
        * i386/sco5.h (RETURN_POPS_ARGS): Name change ix86_return_pops_args.
index 54eb3274b041d4b3d7f24c29a6c16528d8811223..e27797a54e859fa1828cfc64817810b3b8951ee7 100644 (file)
@@ -293,50 +293,141 @@ typedef struct optab
 
 extern rtx (*const insn_gen_function[]) PROTO ((rtx, ...));
 
-extern optab add_optab;
-extern optab sub_optab;
-extern optab smul_optab;       /* Signed and floating-point multiply */
-extern optab smul_highpart_optab; /* Signed multiply, return high word */
-extern optab umul_highpart_optab;
-extern optab smul_widen_optab; /* Signed multiply with result 
-                                  one machine mode wider than args */
-extern optab umul_widen_optab;
-extern optab sdiv_optab;       /* Signed divide */
-extern optab sdivmod_optab;    /* Signed divide-and-remainder in one */
-extern optab udiv_optab;
-extern optab udivmod_optab;
-extern optab smod_optab;       /* Signed remainder */
-extern optab umod_optab;
-extern optab flodiv_optab;     /* Optab for floating divide. */
-extern optab ftrunc_optab;     /* Convert float to integer in float fmt */
-extern optab and_optab;                /* Logical and */
-extern optab ior_optab;                /* Logical or */
-extern optab xor_optab;                /* Logical xor */
-extern optab ashl_optab;       /* Arithmetic shift left */
-extern optab ashr_optab;       /* Arithmetic shift right */
-extern optab lshr_optab;       /* Logical shift right */
-extern optab rotl_optab;       /* Rotate left */
-extern optab rotr_optab;       /* Rotate right */
-extern optab smin_optab;       /* Signed and floating-point minimum value */
-extern optab smax_optab;       /* Signed and floating-point maximum value */
-extern optab umin_optab;       /* Unsigned minimum value */
-extern optab umax_optab;       /* Unsigned maximum value */
-
-extern optab mov_optab;                /* Move instruction.  */
-extern optab movstrict_optab;  /* Move, preserving high part of register.  */
-
-extern optab cmp_optab;                /* Compare insn; two operands.  */
-extern optab tst_optab;                /* tst insn; compare one operand against 0 */
-
-/* Unary operations */
-extern optab neg_optab;                /* Negation */
-extern optab abs_optab;                /* Abs value */
-extern optab one_cmpl_optab;   /* Bitwise not */
-extern optab ffs_optab;                /* Find first bit set */
-extern optab sqrt_optab;       /* Square root */
-extern optab sin_optab;                /* Sine */
-extern optab cos_optab;                /* Cosine */
-extern optab strlen_optab;     /* String length */
+/* Enumeration of valid indexes into optab_table.  */
+enum optab_index
+{
+  OTI_add,
+  OTI_sub,
+
+  /* Signed and fp multiply */
+  OTI_smul,
+  /* Signed multiply, return high word */
+  OTI_smul_highpart,
+  OTI_umul_highpart,
+  /* Signed multiply with result one machine mode wider than args */
+  OTI_smul_widen,
+  OTI_umul_widen,
+
+  /* Signed divide */
+  OTI_sdiv,
+  /* Signed divide-and-remainder in one */
+  OTI_sdivmod,
+  OTI_udiv,
+  OTI_udivmod,
+  /* Signed remainder */
+  OTI_smod,
+  OTI_umod,
+  /* Optab for floating divide. */
+  OTI_flodiv,
+  /* Convert float to integer in float fmt */
+  OTI_ftrunc,
+
+  /* Logical and */
+  OTI_and,
+  /* Logical or */
+  OTI_ior,
+  /* Logical xor */
+  OTI_xor,
+
+  /* Arithmetic shift left */
+  OTI_ashl,
+  /* Logical shift right */
+  OTI_lshr,  
+  /* Arithmetic shift right */
+  OTI_ashr,
+  /* Rotate left */
+  OTI_rotl,
+  /* Rotate right */
+  OTI_rotr,
+  /* Signed and floating-point minimum value */
+  OTI_smin,
+  /* Signed and floating-point maximum value */
+  OTI_smax,
+  /* Unsigned minimum value */
+  OTI_umin,
+  /* Unsigned maximum value */
+  OTI_umax,
+
+  /* Move instruction.  */
+  OTI_mov,
+  /* Move, preserving high part of register.  */
+  OTI_movstrict,
+
+  /* Unary operations */
+  /* Negation */
+  OTI_neg,
+  /* Abs value */
+  OTI_abs,
+  /* Bitwise not */
+  OTI_one_cmpl,
+  /* Find first bit set */
+  OTI_ffs,
+  /* Square root */
+  OTI_sqrt,
+  /* Sine */
+  OTI_sin,
+  /* Cosine */
+  OTI_cos,
+
+  /* Compare insn; two operands.  */
+  OTI_cmp,
+  /* Used only for libcalls for unsigned comparisons.  */
+  OTI_ucmp,
+  /* tst insn; compare one operand against 0 */
+  OTI_tst,
+
+  /* String length */
+  OTI_strlen,
+
+  OTI_MAX
+};
+
+extern optab optab_table[OTI_MAX];
+
+#define add_optab (optab_table[OTI_add])
+#define sub_optab (optab_table[OTI_sub])
+#define smul_optab (optab_table[OTI_smul])
+#define smul_highpart_optab (optab_table[OTI_smul_highpart])
+#define umul_highpart_optab (optab_table[OTI_umul_highpart])
+#define smul_widen_optab (optab_table[OTI_smul_widen])
+#define umul_widen_optab (optab_table[OTI_umul_widen])
+#define sdiv_optab (optab_table[OTI_sdiv])
+#define sdivmod_optab (optab_table[OTI_sdivmod])
+#define udiv_optab (optab_table[OTI_udiv])
+#define udivmod_optab (optab_table[OTI_udivmod])
+#define smod_optab (optab_table[OTI_smod])
+#define umod_optab (optab_table[OTI_umod])
+#define flodiv_optab (optab_table[OTI_flodiv])
+#define ftrunc_optab (optab_table[OTI_ftrunc])
+#define and_optab (optab_table[OTI_and])
+#define ior_optab (optab_table[OTI_ior])
+#define xor_optab (optab_table[OTI_xor])
+#define ashl_optab (optab_table[OTI_ashl])
+#define lshr_optab (optab_table[OTI_lshr])
+#define ashr_optab (optab_table[OTI_ashr])
+#define rotl_optab (optab_table[OTI_rotl])
+#define rotr_optab (optab_table[OTI_rotr])
+#define smin_optab (optab_table[OTI_smin])
+#define smax_optab (optab_table[OTI_smax])
+#define umin_optab (optab_table[OTI_umin])
+#define umax_optab (optab_table[OTI_umax])
+
+#define mov_optab (optab_table[OTI_mov])
+#define movstrict_optab (optab_table[OTI_movstrict])
+
+#define neg_optab (optab_table[OTI_neg])
+#define abs_optab (optab_table[OTI_abs])
+#define one_cmpl_optab (optab_table[OTI_one_cmpl])
+#define ffs_optab (optab_table[OTI_ffs])
+#define sqrt_optab (optab_table[OTI_sqrt])
+#define sin_optab (optab_table[OTI_sin])
+#define cos_optab (optab_table[OTI_cos])
+
+#define cmp_optab (optab_table[OTI_cmp])
+#define ucmp_optab (optab_table[OTI_ucmp])
+#define tst_optab (optab_table[OTI_tst])
+
+#define strlen_optab (optab_table[OTI_strlen])
 
 /* Tables of patterns for extending one integer mode to another.  */
 extern enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2];
@@ -364,130 +455,256 @@ enum optab_methods
   OPTAB_MUST_WIDEN
 };
 
+/* Enumeration of indexes into libfunc_table.  */
+enum libfunc_index
+{
+  LTI_extendsfdf2,
+  LTI_extendsfxf2,
+  LTI_extendsftf2,
+  LTI_extenddfxf2,
+  LTI_extenddftf2,
+
+  LTI_truncdfsf2,
+  LTI_truncxfsf2,
+  LTI_trunctfsf2,
+  LTI_truncxfdf2,
+  LTI_trunctfdf2,
+
+  LTI_memcpy,
+  LTI_bcopy,
+  LTI_memcmp,
+  LTI_bcmp,
+  LTI_memset,
+  LTI_bzero,
+
+  LTI_throw,
+  LTI_rethrow,
+  LTI_sjthrow,
+  LTI_sjpopnthrow,
+  LTI_terminate,
+  LTI_setjmp,
+  LTI_longjmp,
+  LTI_eh_rtime_match,
+
+  LTI_eqhf2,
+  LTI_nehf2,
+  LTI_gthf2,
+  LTI_gehf2,
+  LTI_lthf2,
+  LTI_lehf2,
+
+  LTI_eqsf2,
+  LTI_nesf2,
+  LTI_gtsf2,
+  LTI_gesf2,
+  LTI_ltsf2,
+  LTI_lesf2,
+
+  LTI_eqdf2,
+  LTI_nedf2,
+  LTI_gtdf2,
+  LTI_gedf2,
+  LTI_ltdf2,
+  LTI_ledf2,
+
+  LTI_eqxf2,
+  LTI_nexf2,
+  LTI_gtxf2,
+  LTI_gexf2,
+  LTI_ltxf2,
+  LTI_lexf2,
+
+  LTI_eqtf2,
+  LTI_netf2,
+  LTI_gttf2,
+  LTI_getf2,
+  LTI_lttf2,
+  LTI_letf2,
+
+  LTI_floatsisf,
+  LTI_floatdisf,
+  LTI_floattisf,
+
+  LTI_floatsidf,
+  LTI_floatdidf,
+  LTI_floattidf,
+
+  LTI_floatsixf,
+  LTI_floatdixf,
+  LTI_floattixf,
+
+  LTI_floatsitf,
+  LTI_floatditf,
+  LTI_floattitf,
+
+  LTI_fixsfsi,
+  LTI_fixsfdi,
+  LTI_fixsfti,
+
+  LTI_fixdfsi,
+  LTI_fixdfdi,
+  LTI_fixdfti,
+
+  LTI_fixxfsi,
+  LTI_fixxfdi,
+  LTI_fixxfti,
+
+  LTI_fixtfsi,
+  LTI_fixtfdi,
+  LTI_fixtfti,
+
+  LTI_fixunssfsi,
+  LTI_fixunssfdi,
+  LTI_fixunssfti,
+
+  LTI_fixunsdfsi,
+  LTI_fixunsdfdi,
+  LTI_fixunsdfti,
+
+  LTI_fixunsxfsi,
+  LTI_fixunsxfdi,
+  LTI_fixunsxfti,
+
+  LTI_fixunstfsi,
+  LTI_fixunstfdi,
+  LTI_fixunstfti,
+
+  LTI_chkr_check_addr,
+  LTI_chkr_set_right,
+  LTI_chkr_copy_bitmap,
+  LTI_chkr_check_exec,
+  LTI_chkr_check_str,
+
+  LTI_profile_function_entry,
+  LTI_profile_function_exit,
+
+  LTI_MAX
+};
+
 /* SYMBOL_REF rtx's for the library functions that are called
    implicitly and not via optabs.  */
-
-extern rtx extendsfdf2_libfunc;
-extern rtx extendsfxf2_libfunc;
-extern rtx extendsftf2_libfunc;
-extern rtx extenddfxf2_libfunc;
-extern rtx extenddftf2_libfunc;
-
-extern rtx truncdfsf2_libfunc;
-extern rtx truncxfsf2_libfunc;
-extern rtx trunctfsf2_libfunc;
-extern rtx truncxfdf2_libfunc;
-extern rtx trunctfdf2_libfunc;
-
-extern rtx memcpy_libfunc;
-extern rtx bcopy_libfunc;
-extern rtx memcmp_libfunc;
-extern rtx bcmp_libfunc;
-extern rtx memset_libfunc;
-extern rtx bzero_libfunc;
-
-extern rtx throw_libfunc;
-extern rtx rethrow_libfunc;
-extern rtx sjthrow_libfunc;
-extern rtx sjpopnthrow_libfunc;
-extern rtx terminate_libfunc;
-extern rtx setjmp_libfunc;
-extern rtx longjmp_libfunc;
-extern rtx eh_rtime_match_libfunc;
-
-extern rtx eqhf2_libfunc;
-extern rtx nehf2_libfunc;
-extern rtx gthf2_libfunc;
-extern rtx gehf2_libfunc;
-extern rtx lthf2_libfunc;
-extern rtx lehf2_libfunc;
-
-extern rtx eqsf2_libfunc;
-extern rtx nesf2_libfunc;
-extern rtx gtsf2_libfunc;
-extern rtx gesf2_libfunc;
-extern rtx ltsf2_libfunc;
-extern rtx lesf2_libfunc;
-
-extern rtx eqdf2_libfunc;
-extern rtx nedf2_libfunc;
-extern rtx gtdf2_libfunc;
-extern rtx gedf2_libfunc;
-extern rtx ltdf2_libfunc;
-extern rtx ledf2_libfunc;
-
-extern rtx eqxf2_libfunc;
-extern rtx nexf2_libfunc;
-extern rtx gtxf2_libfunc;
-extern rtx gexf2_libfunc;
-extern rtx ltxf2_libfunc;
-extern rtx lexf2_libfunc;
-
-extern rtx eqtf2_libfunc;
-extern rtx netf2_libfunc;
-extern rtx gttf2_libfunc;
-extern rtx getf2_libfunc;
-extern rtx lttf2_libfunc;
-extern rtx letf2_libfunc;
-
-extern rtx floatsisf_libfunc;
-extern rtx floatdisf_libfunc;
-extern rtx floattisf_libfunc;
-
-extern rtx floatsidf_libfunc;
-extern rtx floatdidf_libfunc;
-extern rtx floattidf_libfunc;
-
-extern rtx floatsixf_libfunc;
-extern rtx floatdixf_libfunc;
-extern rtx floattixf_libfunc;
-
-extern rtx floatsitf_libfunc;
-extern rtx floatditf_libfunc;
-extern rtx floattitf_libfunc;
-
-extern rtx fixsfsi_libfunc;
-extern rtx fixsfdi_libfunc;
-extern rtx fixsfti_libfunc;
-
-extern rtx fixdfsi_libfunc;
-extern rtx fixdfdi_libfunc;
-extern rtx fixdfti_libfunc;
-
-extern rtx fixxfsi_libfunc;
-extern rtx fixxfdi_libfunc;
-extern rtx fixxfti_libfunc;
-
-extern rtx fixtfsi_libfunc;
-extern rtx fixtfdi_libfunc;
-extern rtx fixtfti_libfunc;
-
-extern rtx fixunssfsi_libfunc;
-extern rtx fixunssfdi_libfunc;
-extern rtx fixunssfti_libfunc;
-
-extern rtx fixunsdfsi_libfunc;
-extern rtx fixunsdfdi_libfunc;
-extern rtx fixunsdfti_libfunc;
-
-extern rtx fixunsxfsi_libfunc;
-extern rtx fixunsxfdi_libfunc;
-extern rtx fixunsxfti_libfunc;
-
-extern rtx fixunstfsi_libfunc;
-extern rtx fixunstfdi_libfunc;
-extern rtx fixunstfti_libfunc;
-
-/* For check-memory-usage.  */
-extern rtx chkr_check_addr_libfunc;
-extern rtx chkr_set_right_libfunc;
-extern rtx chkr_copy_bitmap_libfunc;
-extern rtx chkr_check_exec_libfunc;
-extern rtx chkr_check_str_libfunc;
-
-/* For instrument-functions.  */
-extern rtx profile_function_entry_libfunc;
-extern rtx profile_function_exit_libfunc;
+extern rtx libfunc_table[LTI_MAX];
+
+/* Accessor macros for libfunc_table.  */
+#define extendsfdf2_libfunc    (libfunc_table[LTI_extendsfdf2])
+#define extendsfxf2_libfunc    (libfunc_table[LTI_extendsfxf2])
+#define extendsftf2_libfunc    (libfunc_table[LTI_extendsftf2])
+#define extenddfxf2_libfunc    (libfunc_table[LTI_extenddfxf2])
+#define extenddftf2_libfunc    (libfunc_table[LTI_extenddftf2])
+
+#define truncdfsf2_libfunc     (libfunc_table[LTI_truncdfsf2])
+#define truncxfsf2_libfunc     (libfunc_table[LTI_truncxfsf2])
+#define trunctfsf2_libfunc     (libfunc_table[LTI_trunctfsf2])
+#define truncxfdf2_libfunc     (libfunc_table[LTI_truncxfdf2])
+#define trunctfdf2_libfunc     (libfunc_table[LTI_trunctfdf2])
+
+#define memcpy_libfunc (libfunc_table[LTI_memcpy])
+#define bcopy_libfunc  (libfunc_table[LTI_bcopy])
+#define memcmp_libfunc (libfunc_table[LTI_memcmp])
+#define bcmp_libfunc   (libfunc_table[LTI_bcmp])
+#define memset_libfunc (libfunc_table[LTI_memset])
+#define bzero_libfunc  (libfunc_table[LTI_bzero])
+
+#define throw_libfunc  (libfunc_table[LTI_throw])
+#define rethrow_libfunc        (libfunc_table[LTI_rethrow])
+#define sjthrow_libfunc        (libfunc_table[LTI_sjthrow])
+#define sjpopnthrow_libfunc    (libfunc_table[LTI_sjpopnthrow])
+#define terminate_libfunc      (libfunc_table[LTI_terminate])
+#define setjmp_libfunc (libfunc_table[LTI_setjmp])
+#define longjmp_libfunc        (libfunc_table[LTI_longjmp])
+#define eh_rtime_match_libfunc (libfunc_table[LTI_eh_rtime_match])
+
+#define eqhf2_libfunc  (libfunc_table[LTI_eqhf2])
+#define nehf2_libfunc  (libfunc_table[LTI_nehf2])
+#define gthf2_libfunc  (libfunc_table[LTI_gthf2])
+#define gehf2_libfunc  (libfunc_table[LTI_gehf2])
+#define lthf2_libfunc  (libfunc_table[LTI_lthf2])
+#define lehf2_libfunc  (libfunc_table[LTI_lehf2])
+
+#define eqsf2_libfunc  (libfunc_table[LTI_eqsf2])
+#define nesf2_libfunc  (libfunc_table[LTI_nesf2])
+#define gtsf2_libfunc  (libfunc_table[LTI_gtsf2])
+#define gesf2_libfunc  (libfunc_table[LTI_gesf2])
+#define ltsf2_libfunc  (libfunc_table[LTI_ltsf2])
+#define lesf2_libfunc  (libfunc_table[LTI_lesf2])
+
+#define eqdf2_libfunc  (libfunc_table[LTI_eqdf2])
+#define nedf2_libfunc  (libfunc_table[LTI_nedf2])
+#define gtdf2_libfunc  (libfunc_table[LTI_gtdf2])
+#define gedf2_libfunc  (libfunc_table[LTI_gedf2])
+#define ltdf2_libfunc  (libfunc_table[LTI_ltdf2])
+#define ledf2_libfunc  (libfunc_table[LTI_ledf2])
+
+#define eqxf2_libfunc  (libfunc_table[LTI_eqxf2])
+#define nexf2_libfunc  (libfunc_table[LTI_nexf2])
+#define gtxf2_libfunc  (libfunc_table[LTI_gtxf2])
+#define gexf2_libfunc  (libfunc_table[LTI_gexf2])
+#define ltxf2_libfunc  (libfunc_table[LTI_ltxf2])
+#define lexf2_libfunc  (libfunc_table[LTI_lexf2])
+
+#define eqtf2_libfunc  (libfunc_table[LTI_eqtf2])
+#define netf2_libfunc  (libfunc_table[LTI_netf2])
+#define gttf2_libfunc  (libfunc_table[LTI_gttf2])
+#define getf2_libfunc  (libfunc_table[LTI_getf2])
+#define lttf2_libfunc  (libfunc_table[LTI_lttf2])
+#define letf2_libfunc  (libfunc_table[LTI_letf2])
+
+#define floatsisf_libfunc      (libfunc_table[LTI_floatsisf])
+#define floatdisf_libfunc      (libfunc_table[LTI_floatdisf])
+#define floattisf_libfunc      (libfunc_table[LTI_floattisf])
+
+#define floatsidf_libfunc      (libfunc_table[LTI_floatsidf])
+#define floatdidf_libfunc      (libfunc_table[LTI_floatdidf])
+#define floattidf_libfunc      (libfunc_table[LTI_floattidf])
+
+#define floatsixf_libfunc      (libfunc_table[LTI_floatsixf])
+#define floatdixf_libfunc      (libfunc_table[LTI_floatdixf])
+#define floattixf_libfunc      (libfunc_table[LTI_floattixf])
+
+#define floatsitf_libfunc      (libfunc_table[LTI_floatsitf])
+#define floatditf_libfunc      (libfunc_table[LTI_floatditf])
+#define floattitf_libfunc      (libfunc_table[LTI_floattitf])
+
+#define fixsfsi_libfunc        (libfunc_table[LTI_fixsfsi])
+#define fixsfdi_libfunc        (libfunc_table[LTI_fixsfdi])
+#define fixsfti_libfunc        (libfunc_table[LTI_fixsfti])
+
+#define fixdfsi_libfunc        (libfunc_table[LTI_fixdfsi])
+#define fixdfdi_libfunc        (libfunc_table[LTI_fixdfdi])
+#define fixdfti_libfunc        (libfunc_table[LTI_fixdfti])
+
+#define fixxfsi_libfunc        (libfunc_table[LTI_fixxfsi])
+#define fixxfdi_libfunc        (libfunc_table[LTI_fixxfdi])
+#define fixxfti_libfunc        (libfunc_table[LTI_fixxfti])
+
+#define fixtfsi_libfunc        (libfunc_table[LTI_fixtfsi])
+#define fixtfdi_libfunc        (libfunc_table[LTI_fixtfdi])
+#define fixtfti_libfunc        (libfunc_table[LTI_fixtfti])
+
+#define fixunssfsi_libfunc     (libfunc_table[LTI_fixunssfsi])
+#define fixunssfdi_libfunc     (libfunc_table[LTI_fixunssfdi])
+#define fixunssfti_libfunc     (libfunc_table[LTI_fixunssfti])
+
+#define fixunsdfsi_libfunc     (libfunc_table[LTI_fixunsdfsi])
+#define fixunsdfdi_libfunc     (libfunc_table[LTI_fixunsdfdi])
+#define fixunsdfti_libfunc     (libfunc_table[LTI_fixunsdfti])
+
+#define fixunsxfsi_libfunc     (libfunc_table[LTI_fixunsxfsi])
+#define fixunsxfdi_libfunc     (libfunc_table[LTI_fixunsxfdi])
+#define fixunsxfti_libfunc     (libfunc_table[LTI_fixunsxfti])
+
+#define fixunstfsi_libfunc     (libfunc_table[LTI_fixunstfsi])
+#define fixunstfdi_libfunc     (libfunc_table[LTI_fixunstfdi])
+#define fixunstfti_libfunc     (libfunc_table[LTI_fixunstfti])
+
+#define chkr_check_addr_libfunc        (libfunc_table[LTI_chkr_check_addr])
+#define chkr_set_right_libfunc (libfunc_table[LTI_chkr_set_right])
+#define chkr_copy_bitmap_libfunc       (libfunc_table[LTI_chkr_copy_bitmap])
+#define chkr_check_exec_libfunc        (libfunc_table[LTI_chkr_check_exec])
+#define chkr_check_str_libfunc (libfunc_table[LTI_chkr_check_str])
+
+#define profile_function_entry_libfunc (libfunc_table[LTI_profile_function_entry])
+#define profile_function_exit_libfunc  (libfunc_table[LTI_profile_function_exit])
 \f
 typedef rtx (*rtxfun) PROTO ((rtx));
 
index 82bfc6a4e12c745f4466031ce9fe228c52be49df..ae6a6ff999be59ac0d25c235e1d9ac1be7bd6208 100644 (file)
@@ -45,50 +45,9 @@ Boston, MA 02111-1307, USA.  */
 
    See expr.h for documentation of these optabs.  */
 
-optab add_optab;
-optab sub_optab;
-optab smul_optab;
-optab smul_highpart_optab;
-optab umul_highpart_optab;
-optab smul_widen_optab;
-optab umul_widen_optab;
-optab sdiv_optab;
-optab sdivmod_optab;
-optab udiv_optab;
-optab udivmod_optab;
-optab smod_optab;
-optab umod_optab;
-optab flodiv_optab;
-optab ftrunc_optab;
-optab and_optab;
-optab ior_optab;
-optab xor_optab;
-optab ashl_optab;
-optab lshr_optab;
-optab ashr_optab;
-optab rotl_optab;
-optab rotr_optab;
-optab smin_optab;
-optab smax_optab;
-optab umin_optab;
-optab umax_optab;
-
-optab mov_optab;
-optab movstrict_optab;
-
-optab neg_optab;
-optab abs_optab;
-optab one_cmpl_optab;
-optab ffs_optab;
-optab sqrt_optab;
-optab sin_optab;
-optab cos_optab;
-
-optab cmp_optab;
-optab ucmp_optab;  /* Used only for libcalls for unsigned comparisons.  */
-optab tst_optab;
-
-optab strlen_optab;
+optab optab_table[OTI_MAX];
+
+rtx libfunc_table[LTI_MAX];
 
 /* Tables of patterns for extending one integer mode to another.  */
 enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2];
@@ -101,129 +60,6 @@ enum insn_code floattab[NUM_MACHINE_MODES][NUM_MACHINE_MODES][2];
 /* Contains the optab used for each rtx code.  */
 optab code_to_optab[NUM_RTX_CODE + 1];
 
-/* SYMBOL_REF rtx's for the library functions that are called
-   implicitly and not via optabs.  */
-
-rtx extendsfdf2_libfunc;
-rtx extendsfxf2_libfunc;
-rtx extendsftf2_libfunc;
-rtx extenddfxf2_libfunc;
-rtx extenddftf2_libfunc;
-
-rtx truncdfsf2_libfunc;
-rtx truncxfsf2_libfunc;
-rtx trunctfsf2_libfunc;
-rtx truncxfdf2_libfunc;
-rtx trunctfdf2_libfunc;
-
-rtx memcpy_libfunc;
-rtx bcopy_libfunc;
-rtx memcmp_libfunc;
-rtx bcmp_libfunc;
-rtx memset_libfunc;
-rtx bzero_libfunc;
-
-rtx throw_libfunc;
-rtx rethrow_libfunc;
-rtx sjthrow_libfunc;
-rtx sjpopnthrow_libfunc;
-rtx terminate_libfunc;
-rtx setjmp_libfunc;
-rtx longjmp_libfunc;
-rtx eh_rtime_match_libfunc;
-
-rtx eqhf2_libfunc;
-rtx nehf2_libfunc;
-rtx gthf2_libfunc;
-rtx gehf2_libfunc;
-rtx lthf2_libfunc;
-rtx lehf2_libfunc;
-
-rtx eqsf2_libfunc;
-rtx nesf2_libfunc;
-rtx gtsf2_libfunc;
-rtx gesf2_libfunc;
-rtx ltsf2_libfunc;
-rtx lesf2_libfunc;
-
-rtx eqdf2_libfunc;
-rtx nedf2_libfunc;
-rtx gtdf2_libfunc;
-rtx gedf2_libfunc;
-rtx ltdf2_libfunc;
-rtx ledf2_libfunc;
-
-rtx eqxf2_libfunc;
-rtx nexf2_libfunc;
-rtx gtxf2_libfunc;
-rtx gexf2_libfunc;
-rtx ltxf2_libfunc;
-rtx lexf2_libfunc;
-
-rtx eqtf2_libfunc;
-rtx netf2_libfunc;
-rtx gttf2_libfunc;
-rtx getf2_libfunc;
-rtx lttf2_libfunc;
-rtx letf2_libfunc;
-
-rtx floatsisf_libfunc;
-rtx floatdisf_libfunc;
-rtx floattisf_libfunc;
-
-rtx floatsidf_libfunc;
-rtx floatdidf_libfunc;
-rtx floattidf_libfunc;
-
-rtx floatsixf_libfunc;
-rtx floatdixf_libfunc;
-rtx floattixf_libfunc;
-
-rtx floatsitf_libfunc;
-rtx floatditf_libfunc;
-rtx floattitf_libfunc;
-
-rtx fixsfsi_libfunc;
-rtx fixsfdi_libfunc;
-rtx fixsfti_libfunc;
-
-rtx fixdfsi_libfunc;
-rtx fixdfdi_libfunc;
-rtx fixdfti_libfunc;
-
-rtx fixxfsi_libfunc;
-rtx fixxfdi_libfunc;
-rtx fixxfti_libfunc;
-
-rtx fixtfsi_libfunc;
-rtx fixtfdi_libfunc;
-rtx fixtfti_libfunc;
-
-rtx fixunssfsi_libfunc;
-rtx fixunssfdi_libfunc;
-rtx fixunssfti_libfunc;
-
-rtx fixunsdfsi_libfunc;
-rtx fixunsdfdi_libfunc;
-rtx fixunsdfti_libfunc;
-
-rtx fixunsxfsi_libfunc;
-rtx fixunsxfdi_libfunc;
-rtx fixunsxfti_libfunc;
-
-rtx fixunstfsi_libfunc;
-rtx fixunstfdi_libfunc;
-rtx fixunstfti_libfunc;
-
-rtx chkr_check_addr_libfunc;
-rtx chkr_set_right_libfunc;
-rtx chkr_copy_bitmap_libfunc;
-rtx chkr_check_exec_libfunc;
-rtx chkr_check_str_libfunc;
-
-rtx profile_function_entry_libfunc;
-rtx profile_function_exit_libfunc;
-
 /* Indexed by the rtx-code for a conditional (eg. EQ, LT,...)
    gives the gen_function to make a branch to test that condition.  */