diff options
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index da72ffddac9..2b366ad61f0 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1208,7 +1208,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) && GET_MODE_SIZE (mode) >= 2 * UNITS_PER_WORD && binoptab->handlers[(int) word_mode].insn_code != CODE_FOR_nothing) { - int i; + unsigned int i; optab otheroptab = binoptab == add_optab ? sub_optab : add_optab; int nwords = GET_MODE_BITSIZE (mode) / BITS_PER_WORD; rtx carry_in = NULL_RTX, carry_out = NULL_RTX; @@ -1296,7 +1296,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) carry_in = carry_out; } - if (i == GET_MODE_BITSIZE (mode) / BITS_PER_WORD) + if (i == GET_MODE_BITSIZE (mode) / (unsigned) BITS_PER_WORD) { if (mov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing) { @@ -4733,7 +4733,7 @@ static optab new_optab () { int i; - optab op = (optab) xmalloc (sizeof (struct optab)); + optab op = (optab) ggc_alloc (sizeof (struct optab)); for (i = 0; i < NUM_MACHINE_MODES; i++) { op->handlers[i].insn_code = CODE_FOR_nothing; @@ -4865,19 +4865,6 @@ init_one_libfunc (name) return XEXP (DECL_RTL (decl), 0); } -/* Mark ARG (which is really an OPTAB *) for GC. */ - -void -mark_optab (arg) - void *arg; -{ - optab o = *(optab *) arg; - int i; - - for (i = 0; i < NUM_MACHINE_MODES; ++i) - ggc_mark_rtx (o->handlers[i].libfunc); -} - /* Call this once to initialize the contents of the optabs appropriately for the current target machine. */ @@ -5228,18 +5215,15 @@ init_optabs () /* Allow the target to add more libcalls or rename some, etc. */ INIT_TARGET_OPTABS; #endif - - /* Add these GC roots. */ - ggc_add_root (optab_table, OTI_MAX, sizeof(optab), mark_optab); - ggc_add_rtx_root (libfunc_table, LTI_MAX); } +static GTY(()) rtx trap_rtx; + #ifdef HAVE_conditional_trap /* The insn generating function can not take an rtx_code argument. TRAP_RTX is used as an rtx argument. Its code is replaced with the code to be used in the trap insn and all other fields are ignored. */ -static rtx trap_rtx; static void init_traps () @@ -5247,7 +5231,6 @@ init_traps () if (HAVE_conditional_trap) { trap_rtx = gen_rtx_fmt_ee (EQ, VOIDmode, NULL_RTX, NULL_RTX); - ggc_add_rtx_root (&trap_rtx, 1); } } #endif @@ -5286,3 +5269,5 @@ gen_cond_trap (code, op1, op2, tcode) return 0; } + +#include "gt-optabs.h" |