200x-xx-xx Jakub Jelinek <jakub@redhat.com> Richard Sandiford <rsandifo@nildram.co.uk>
gcc/ 200x-xx-xx Jakub Jelinek <jakub@redhat.com> Richard Sandiford <rsandifo@nildram.co.uk> * optabs.c (clear_insn_codes): New function. (new_optab): Delete. (init_optab, init_optabv): Don't call new_optab. (init_convert_optab): Don't clear the insn codes. (init_optabs): Call clear_insn_codes. Co-Authored-By: Richard Sandiford <rsandifo@nildram.co.uk> From-SVN: r130618
This commit is contained in:
parent
07c7262ec3
commit
c0742514bd
2 changed files with 45 additions and 26 deletions
|
@ -1,3 +1,12 @@
|
|||
2007-12-05 Jakub Jelinek <jakub@redhat.com>
|
||||
Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
* optabs.c (clear_insn_codes): New function.
|
||||
(new_optab): Delete.
|
||||
(init_optab, init_optabv): Don't call new_optab.
|
||||
(init_convert_optab): Don't clear the insn codes.
|
||||
(init_optabs): Call clear_insn_codes.
|
||||
|
||||
2007-12-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* omp-low.c (optimize_omp_library_calls): New function.
|
||||
|
|
62
gcc/optabs.c
62
gcc/optabs.c
|
@ -59,7 +59,7 @@ __extension__ struct optab optab_table[OTI_MAX]
|
|||
= { [0 ... OTI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1].insn_code
|
||||
= CODE_FOR_nothing };
|
||||
#else
|
||||
/* new_optab will do runtime initialization otherwise. */
|
||||
/* init_insn_codes will do runtime initialization otherwise. */
|
||||
struct optab optab_table[OTI_MAX];
|
||||
#endif
|
||||
|
||||
|
@ -5564,31 +5564,38 @@ have_insn_for (enum rtx_code code, enum machine_mode mode)
|
|||
!= CODE_FOR_nothing));
|
||||
}
|
||||
|
||||
/* Create a blank optab. */
|
||||
#if GCC_VERSION >= 4000
|
||||
static inline void
|
||||
new_optab (optab op ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* All insn_code fields are already initialized using
|
||||
designated initializers. */
|
||||
}
|
||||
#else
|
||||
/* Set all insn_code fields to CODE_FOR_nothing. */
|
||||
|
||||
static void
|
||||
new_optab (optab op)
|
||||
init_insn_codes (void)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NUM_MACHINE_MODES; i++)
|
||||
optab_handler (op, i)->insn_code = CODE_FOR_nothing;
|
||||
for (i = 0; i < (unsigned int) OTI_MAX; i++)
|
||||
{
|
||||
unsigned int j;
|
||||
optab op;
|
||||
|
||||
op = &optab_table[i];
|
||||
for (j = 0; j < NUM_MACHINE_MODES; j++)
|
||||
optab_handler (op, j)->insn_code = CODE_FOR_nothing;
|
||||
}
|
||||
for (i = 0; i < (unsigned int) COI_MAX; i++)
|
||||
{
|
||||
unsigned int j, k;
|
||||
convert_optab op;
|
||||
|
||||
op = &convert_optab_table[i];
|
||||
for (j = 0; j < NUM_MACHINE_MODES; j++)
|
||||
for (k = 0; k < NUM_MACHINE_MODES; k++)
|
||||
convert_optab_handler (op, j, k)->insn_code = CODE_FOR_nothing;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Same, but fill in its code as CODE, and write it into the
|
||||
code_to_optab table. */
|
||||
/* Initialize OP's code to CODE, and write it into the code_to_optab table. */
|
||||
static inline void
|
||||
init_optab (optab op, enum rtx_code code)
|
||||
{
|
||||
new_optab (op);
|
||||
op->code = code;
|
||||
code_to_optab[(int) code] = op;
|
||||
}
|
||||
|
@ -5598,7 +5605,6 @@ init_optab (optab op, enum rtx_code code)
|
|||
static inline void
|
||||
init_optabv (optab op, enum rtx_code code)
|
||||
{
|
||||
new_optab (op);
|
||||
op->code = code;
|
||||
}
|
||||
|
||||
|
@ -5606,13 +5612,6 @@ init_optabv (optab op, enum rtx_code code)
|
|||
static void
|
||||
init_convert_optab (convert_optab op, enum rtx_code code)
|
||||
{
|
||||
#if !(GCC_VERSION >= 4000)
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < NUM_MACHINE_MODES; i++)
|
||||
for (j = 0; j < NUM_MACHINE_MODES; j++)
|
||||
convert_optab_handler (op, i, j)->insn_code = CODE_FOR_nothing;
|
||||
#endif
|
||||
op->code = code;
|
||||
}
|
||||
|
||||
|
@ -6241,6 +6240,7 @@ init_optabs (void)
|
|||
{
|
||||
unsigned int i;
|
||||
enum machine_mode int_mode;
|
||||
static bool reinit;
|
||||
|
||||
libfunc_hash = htab_create_ggc (10, hash_libfunc, eq_libfunc, NULL);
|
||||
/* Start by initializing all tables to contain CODE_FOR_nothing. */
|
||||
|
@ -6259,6 +6259,14 @@ init_optabs (void)
|
|||
vcondu_gen_code[i] = CODE_FOR_nothing;
|
||||
}
|
||||
|
||||
#if GCC_VERSION >= 4000
|
||||
/* We statically initialize the insn_codes with CODE_FOR_nothing. */
|
||||
if (reinit)
|
||||
init_insn_codes ();
|
||||
#else
|
||||
init_insn_codes ();
|
||||
#endif
|
||||
|
||||
init_optab (add_optab, PLUS);
|
||||
init_optabv (addv_optab, PLUS);
|
||||
init_optab (sub_optab, MINUS);
|
||||
|
@ -6736,6 +6744,8 @@ init_optabs (void)
|
|||
|
||||
/* Allow the target to add more libcalls or rename some, etc. */
|
||||
targetm.init_libfuncs ();
|
||||
|
||||
reinit = true;
|
||||
}
|
||||
|
||||
/* Print information about the current contents of the optabs on
|
||||
|
|
Loading…
Add table
Reference in a new issue