regmove.c (replace_in_call_usage): Fix warnings.
2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl> * regmove.c (replace_in_call_usage): Fix warnings. * sched-deps.c (add_dependence): Fix warnings. * simplify-rtx.c (simplify_subreg): Likewise. Return NULL_RTX instead of NULL. * reg-stack.c (emit_swap_insn): Eliminate warnings. (subst_asm_stack_regs): Likewise. * combine.c (num_sign_bit_copies): Cast bitwidth to int to avoid warnings. * dwarf2out.c (output_call_frame_info): Declare i as int. (build_abbrev_table): Declare n_alloc as int. (dwarf2out_finish): Initialize die. * except.c: Declare sjlj_funcdef_number as unsigned. (connect_post_landing_pads): Declare j as unsigned. (convert_to_eh_region_ranges): Initialize call_site. (output_function_exception_table): Initialize tt_format_size. * expr.c (move_by_pieces_1): Initialize to1. (store_constructor): Initialize minelt and maxelt. * flow.c (mark_regs_live_at_end): Declare i as unsigned. * function.c (instantiate_decls): Avoid signed/unsigned warning. * c-decl.c (combine_parm_decls): Unused, remove. * c-tree.h: Remove prototype for combine_parm_decls. * reload.c (push_reload): Fix warning. (regno_clobbered_p): Likewise. * reload1.c (replace_pseudos_in_call_usage): Likewise. (reload_combine): Likewise. * bitmap.c: Rename bitmap_zero to bitmap_zero_bits to fix warnings. * bitmap.h: Rename bitmap_zero to bitmap_zero_bits to fix warnings. * bitmap.c (bitmap_operation): Change user. * bitmap.h (EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise. For cp/: 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl> * call.c (build_op_delete_call): Initialize fn. (convert_like_real): Delete conditional. (joust): Initialize *w and *l. * class.c: Add prototype for binfo_ctor_vtable. (get_primary_binfo): Initialize result. * init.c (build_java_class_ref): Initialize name. * typeck.c (unary_complex_lvalue): Do not duplicate the argument to modify, pre-, or post-increment when used as an lvalue and when the argument has side-effects. For ch/: 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl> * ch-tree.h: Remove prototype for combine_parm_decls, unused function. From-SVN: r43893
This commit is contained in:
parent
1a74aab130
commit
ae0ed63adc
20 changed files with 62 additions and 198 deletions
|
@ -1,5 +1,5 @@
|
|||
/* Functions to support general ended bitmaps.
|
||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -38,7 +38,7 @@ static int bitmap_obstack_init = FALSE;
|
|||
#endif
|
||||
|
||||
/* Global data */
|
||||
bitmap_element bitmap_zero; /* An element of all zero bits. */
|
||||
bitmap_element bitmap_zero_bits; /* An element of all zero bits. */
|
||||
bitmap_element *bitmap_free; /* Freelist of bitmap elements. */
|
||||
|
||||
static void bitmap_element_free PARAMS ((bitmap, bitmap_element *));
|
||||
|
@ -572,14 +572,14 @@ bitmap_operation (to, from1, from2, operation)
|
|||
{
|
||||
indx = indx1;
|
||||
from1_tmp = from1_ptr;
|
||||
from2_tmp = &bitmap_zero;
|
||||
from2_tmp = &bitmap_zero_bits;
|
||||
from1_ptr = from1_ptr->next;
|
||||
indx1 = (from1_ptr) ? from1_ptr->indx : HIGHEST_INDEX;
|
||||
}
|
||||
else
|
||||
{
|
||||
indx = indx2;
|
||||
from1_tmp = &bitmap_zero;
|
||||
from1_tmp = &bitmap_zero_bits;
|
||||
from2_tmp = from2_ptr;
|
||||
from2_ptr = from2_ptr->next;
|
||||
indx2 = (from2_ptr) ? from2_ptr->indx : HIGHEST_INDEX;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Functions to support general ended bitmaps.
|
||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -66,7 +66,7 @@ enum bitmap_bits {
|
|||
|
||||
/* Global data */
|
||||
extern bitmap_element *bitmap_free; /* Freelist of bitmap elements */
|
||||
extern bitmap_element bitmap_zero; /* Zero bitmap element */
|
||||
extern bitmap_element bitmap_zero_bits; /* Zero bitmap element */
|
||||
|
||||
/* Clear a bitmap by freeing up the linked list. */
|
||||
extern void bitmap_clear PARAMS ((bitmap));
|
||||
|
@ -247,7 +247,7 @@ do { \
|
|||
ptr2_ = ptr2_->next; \
|
||||
\
|
||||
tmp2_ = ((ptr2_ != 0 && ptr2_->indx == ptr1_->indx) \
|
||||
? ptr2_ : &bitmap_zero); \
|
||||
? ptr2_ : &bitmap_zero_bits); \
|
||||
\
|
||||
for (; word_num_ < BITMAP_ELEMENT_WORDS; word_num_++) \
|
||||
{ \
|
||||
|
|
143
gcc/c-decl.c
143
gcc/c-decl.c
|
@ -6569,149 +6569,6 @@ store_parm_decls ()
|
|||
cfun->x_dont_save_pending_sizes_p = 1;
|
||||
}
|
||||
|
||||
/* SPECPARMS is an identifier list--a chain of TREE_LIST nodes
|
||||
each with a parm name as the TREE_VALUE. A null pointer as TREE_VALUE
|
||||
stands for an ellipsis in the identifier list.
|
||||
|
||||
PARMLIST is the data returned by get_parm_info for the
|
||||
parmlist that follows the semicolon.
|
||||
|
||||
We return a value of the same sort that get_parm_info returns,
|
||||
except that it describes the combination of identifiers and parmlist. */
|
||||
|
||||
tree
|
||||
combine_parm_decls (specparms, parmlist, void_at_end)
|
||||
tree specparms, parmlist;
|
||||
int void_at_end;
|
||||
{
|
||||
register tree fndecl = current_function_decl;
|
||||
register tree parm;
|
||||
|
||||
tree parmdecls = TREE_PURPOSE (parmlist);
|
||||
|
||||
/* This is a chain of any other decls that came in among the parm
|
||||
declarations. They were separated already by get_parm_info,
|
||||
so we just need to keep them separate. */
|
||||
tree nonparms = TREE_VALUE (parmlist);
|
||||
|
||||
tree types = 0;
|
||||
|
||||
for (parm = parmdecls; parm; parm = TREE_CHAIN (parm))
|
||||
DECL_WEAK (parm) = 0;
|
||||
|
||||
for (parm = specparms; parm; parm = TREE_CHAIN (parm))
|
||||
{
|
||||
register tree tail, found = NULL;
|
||||
|
||||
/* See if any of the parmdecls specifies this parm by name. */
|
||||
for (tail = parmdecls; tail; tail = TREE_CHAIN (tail))
|
||||
if (DECL_NAME (tail) == TREE_VALUE (parm))
|
||||
{
|
||||
found = tail;
|
||||
break;
|
||||
}
|
||||
|
||||
/* If declaration already marked, we have a duplicate name.
|
||||
Complain, and don't use this decl twice. */
|
||||
if (found && DECL_WEAK (found))
|
||||
{
|
||||
error_with_decl (found, "multiple parameters named `%s'");
|
||||
found = 0;
|
||||
}
|
||||
|
||||
/* If the declaration says "void", complain and ignore it. */
|
||||
if (found && VOID_TYPE_P (TREE_TYPE (found)))
|
||||
{
|
||||
error_with_decl (found, "parameter `%s' declared void");
|
||||
TREE_TYPE (found) = integer_type_node;
|
||||
DECL_ARG_TYPE (found) = integer_type_node;
|
||||
layout_decl (found, 0);
|
||||
}
|
||||
|
||||
/* Traditionally, a parm declared float is actually a double. */
|
||||
if (found && flag_traditional
|
||||
&& TYPE_MAIN_VARIANT (TREE_TYPE (found)) == float_type_node)
|
||||
{
|
||||
TREE_TYPE (found) = double_type_node;
|
||||
DECL_ARG_TYPE (found) = double_type_node;
|
||||
layout_decl (found, 0);
|
||||
}
|
||||
|
||||
/* If no declaration found, default to int. */
|
||||
if (!found)
|
||||
{
|
||||
found = build_decl (PARM_DECL, TREE_VALUE (parm),
|
||||
integer_type_node);
|
||||
DECL_ARG_TYPE (found) = TREE_TYPE (found);
|
||||
DECL_SOURCE_LINE (found) = DECL_SOURCE_LINE (fndecl);
|
||||
DECL_SOURCE_FILE (found) = DECL_SOURCE_FILE (fndecl);
|
||||
error_with_decl (found, "type of parameter `%s' is not declared");
|
||||
pushdecl (found);
|
||||
}
|
||||
|
||||
TREE_PURPOSE (parm) = found;
|
||||
|
||||
/* Mark this decl as "already found". */
|
||||
DECL_WEAK (found) = 1;
|
||||
}
|
||||
|
||||
/* Complain about any actual PARM_DECLs not matched with any names. */
|
||||
|
||||
for (parm = parmdecls; parm;)
|
||||
{
|
||||
tree next = TREE_CHAIN (parm);
|
||||
TREE_CHAIN (parm) = 0;
|
||||
|
||||
/* Complain about args with incomplete types. */
|
||||
if (!COMPLETE_TYPE_P (TREE_TYPE (parm)))
|
||||
{
|
||||
error_with_decl (parm, "parameter `%s' has incomplete type");
|
||||
TREE_TYPE (parm) = error_mark_node;
|
||||
}
|
||||
|
||||
if (! DECL_WEAK (parm))
|
||||
{
|
||||
error_with_decl (parm,
|
||||
"declaration for parameter `%s' but no such parameter");
|
||||
/* Pretend the parameter was not missing.
|
||||
This gets us to a standard state and minimizes
|
||||
further error messages. */
|
||||
specparms
|
||||
= chainon (specparms,
|
||||
tree_cons (parm, NULL_TREE, NULL_TREE));
|
||||
}
|
||||
|
||||
parm = next;
|
||||
}
|
||||
|
||||
/* Chain the declarations together in the order of the list of names.
|
||||
At the same time, build up a list of their types, in reverse order. */
|
||||
|
||||
parm = specparms;
|
||||
parmdecls = 0;
|
||||
{
|
||||
register tree last;
|
||||
for (last = 0; parm; parm = TREE_CHAIN (parm))
|
||||
if (TREE_PURPOSE (parm))
|
||||
{
|
||||
if (last == 0)
|
||||
parmdecls = TREE_PURPOSE (parm);
|
||||
else
|
||||
TREE_CHAIN (last) = TREE_PURPOSE (parm);
|
||||
last = TREE_PURPOSE (parm);
|
||||
TREE_CHAIN (last) = 0;
|
||||
|
||||
types = tree_cons (NULL_TREE, TREE_TYPE (parm), types);
|
||||
}
|
||||
}
|
||||
|
||||
if (void_at_end)
|
||||
return tree_cons (parmdecls, nonparms,
|
||||
nreverse (tree_cons (NULL_TREE, void_type_node, types)));
|
||||
|
||||
return tree_cons (parmdecls, nonparms, nreverse (types));
|
||||
}
|
||||
|
||||
/* Finish up a function declaration and compile that function
|
||||
all the way to assembler language output. The free the storage
|
||||
for the function definition.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Definitions for C parsing and type checking.
|
||||
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
|
||||
1999, 2000 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -168,7 +168,6 @@ extern void c_mark_varargs PARAMS ((void));
|
|||
extern void check_for_loop_decls PARAMS ((void));
|
||||
extern tree check_identifier PARAMS ((tree, tree));
|
||||
extern void clear_parm_order PARAMS ((void));
|
||||
extern tree combine_parm_decls PARAMS ((tree, tree, int));
|
||||
extern int complete_array_type PARAMS ((tree, tree, int));
|
||||
extern void declare_parm_level PARAMS ((int));
|
||||
extern tree define_label PARAMS ((const char *, int,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Definitions for CHILL parsing and type checking.
|
||||
Copyright (C) 1992, 1993, 1994, 1998,
|
||||
1999, 2000 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
|
@ -669,7 +669,6 @@ extern tree c_build_type_variant PARAMS ((tree, int, int));
|
|||
extern int c_decode_option PARAMS ((int, char **));
|
||||
extern void c_mark_varargs PARAMS ((void));
|
||||
extern void clear_parm_order PARAMS ((void));
|
||||
extern tree combine_parm_decls PARAMS ((tree, tree, int));
|
||||
extern int complete_array_type PARAMS ((tree, tree, int));
|
||||
extern void declare_parm_level PARAMS ((int));
|
||||
extern tree define_label PARAMS ((const char *, int, tree));
|
||||
|
|
|
@ -8463,7 +8463,8 @@ num_sign_bit_copies (x, mode)
|
|||
of sign bit copies, we can just subtract that amount from the
|
||||
number. */
|
||||
if (GET_CODE (XEXP (x, 1)) == CONST_INT
|
||||
&& INTVAL (XEXP (x, 1)) >= 0 && INTVAL (XEXP (x, 1)) < bitwidth)
|
||||
&& INTVAL (XEXP (x, 1)) >= 0
|
||||
&& INTVAL (XEXP (x, 1)) < (int) bitwidth)
|
||||
{
|
||||
num0 = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
return MAX (1, num0 - (code == ROTATE ? INTVAL (XEXP (x, 1))
|
||||
|
@ -8595,7 +8596,7 @@ num_sign_bit_copies (x, mode)
|
|||
num0 = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
if (GET_CODE (XEXP (x, 1)) == CONST_INT
|
||||
&& INTVAL (XEXP (x, 1)) > 0)
|
||||
num0 = MIN (bitwidth, num0 + INTVAL (XEXP (x, 1)));
|
||||
num0 = MIN ((int) bitwidth, num0 + INTVAL (XEXP (x, 1)));
|
||||
|
||||
return num0;
|
||||
|
||||
|
@ -8603,7 +8604,7 @@ num_sign_bit_copies (x, mode)
|
|||
/* Left shifts destroy copies. */
|
||||
if (GET_CODE (XEXP (x, 1)) != CONST_INT
|
||||
|| INTVAL (XEXP (x, 1)) < 0
|
||||
|| INTVAL (XEXP (x, 1)) >= bitwidth)
|
||||
|| INTVAL (XEXP (x, 1)) >= (int) bitwidth)
|
||||
return 1;
|
||||
|
||||
num0 = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
|
|
|
@ -3555,7 +3555,8 @@ build_op_delete_call (code, addr, size, flags, placement)
|
|||
tree addr, size, placement;
|
||||
int flags;
|
||||
{
|
||||
tree fn, fns, fnname, fntype, argtypes, args, type;
|
||||
tree fn = NULL_TREE;
|
||||
tree fns, fnname, fntype, argtypes, args, type;
|
||||
int pass;
|
||||
|
||||
if (addr == error_mark_node)
|
||||
|
@ -3871,8 +3872,7 @@ convert_like_real (convs, expr, fn, argnum, inner)
|
|||
/* Copy-initialization where the cv-unqualified version of the source
|
||||
type is the same class as, or a derived class of, the class of the
|
||||
destination [is treated as direct-initialization]. [dcl.init] */
|
||||
if (fn)
|
||||
savew = warningcount, savee = errorcount;
|
||||
savew = warningcount, savee = errorcount;
|
||||
expr = build_new_method_call (NULL_TREE, complete_ctor_identifier,
|
||||
build_tree_list (NULL_TREE, expr),
|
||||
TYPE_BINFO (totype),
|
||||
|
@ -5425,7 +5425,7 @@ tweak:
|
|||
if (!pedantic)
|
||||
{
|
||||
int rank1 = IDENTITY_RANK, rank2 = IDENTITY_RANK;
|
||||
struct z_candidate *w, *l;
|
||||
struct z_candidate *w = 0, *l = 0;
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
|
|
|
@ -202,6 +202,7 @@ static void update_vtable_entry_for_fn PARAMS ((tree, tree, tree, tree *));
|
|||
static tree copy_virtuals PARAMS ((tree));
|
||||
static void build_ctor_vtbl_group PARAMS ((tree, tree));
|
||||
static void build_vtt PARAMS ((tree));
|
||||
static tree binfo_ctor_vtable PARAMS ((tree));
|
||||
static tree *build_vtt_inits PARAMS ((tree, tree, tree *, tree *));
|
||||
static tree dfs_build_secondary_vptr_vtt_inits PARAMS ((tree, void *));
|
||||
static tree dfs_ctor_vtable_bases_queue_p PARAMS ((tree, void *data));
|
||||
|
@ -6796,7 +6797,7 @@ get_primary_binfo (binfo)
|
|||
tree binfo;
|
||||
{
|
||||
tree primary_base;
|
||||
tree result;
|
||||
tree result = NULL_TREE;
|
||||
tree virtuals;
|
||||
|
||||
primary_base = CLASSTYPE_PRIMARY_BINFO (BINFO_TYPE (binfo));
|
||||
|
|
|
@ -2200,7 +2200,7 @@ tree
|
|||
build_java_class_ref (type)
|
||||
tree type;
|
||||
{
|
||||
tree name, class_decl;
|
||||
tree name = NULL_TREE, class_decl;
|
||||
static tree CL_suffix = NULL_TREE;
|
||||
if (CL_suffix == NULL_TREE)
|
||||
CL_suffix = get_identifier("class$");
|
||||
|
|
|
@ -1716,7 +1716,7 @@ static void
|
|||
output_call_frame_info (for_eh)
|
||||
int for_eh;
|
||||
{
|
||||
register unsigned long i;
|
||||
register unsigned int i;
|
||||
register dw_fde_ref fde;
|
||||
register dw_cfi_ref cfi;
|
||||
char l1[20], l2[20];
|
||||
|
@ -5507,7 +5507,7 @@ build_abbrev_table (die)
|
|||
register dw_die_ref die;
|
||||
{
|
||||
register unsigned long abbrev_id;
|
||||
register unsigned long n_alloc;
|
||||
register unsigned int n_alloc;
|
||||
register dw_die_ref c;
|
||||
register dw_attr_ref d_attr, a_attr;
|
||||
|
||||
|
@ -11450,7 +11450,7 @@ void
|
|||
dwarf2out_finish ()
|
||||
{
|
||||
limbo_die_node *node, *next_node;
|
||||
dw_die_ref die;
|
||||
dw_die_ref die = 0;
|
||||
|
||||
/* Traverse the limbo die list, and add parent/child links. The only
|
||||
dies without parents that should be here are concrete instances of
|
||||
|
|
|
@ -100,7 +100,7 @@ tree (*lang_eh_runtime_type) PARAMS ((tree));
|
|||
rtx exception_handler_labels;
|
||||
|
||||
static int call_site_base;
|
||||
static int sjlj_funcdef_number;
|
||||
static unsigned int sjlj_funcdef_number;
|
||||
static htab_t type_to_runtime_map;
|
||||
|
||||
/* Describe the SjLj_Function_Context structure. */
|
||||
|
@ -1855,7 +1855,8 @@ connect_post_landing_pads ()
|
|||
static void
|
||||
dw2_build_landing_pads ()
|
||||
{
|
||||
int i, j;
|
||||
int i;
|
||||
unsigned int j;
|
||||
|
||||
for (i = cfun->eh->last_region_number; i > 0; --i)
|
||||
{
|
||||
|
@ -3233,7 +3234,7 @@ convert_to_eh_region_ranges ()
|
|||
rtx last_action_insn = NULL_RTX;
|
||||
rtx last_landing_pad = NULL_RTX;
|
||||
rtx first_no_action_insn = NULL_RTX;
|
||||
int call_site;
|
||||
int call_site = 0;
|
||||
|
||||
if (USING_SJLJ_EXCEPTIONS || cfun->eh->region_tree == NULL)
|
||||
return;
|
||||
|
@ -3504,7 +3505,7 @@ output_function_exception_table ()
|
|||
#endif
|
||||
int have_tt_data;
|
||||
int funcdef_number;
|
||||
int tt_format_size;
|
||||
int tt_format_size = 0;
|
||||
|
||||
/* Not all functions need anything. */
|
||||
if (! cfun->uses_eh_lsda)
|
||||
|
|
|
@ -1566,7 +1566,7 @@ move_by_pieces_1 (genfun, mode, data)
|
|||
struct move_by_pieces *data;
|
||||
{
|
||||
unsigned int size = GET_MODE_SIZE (mode);
|
||||
rtx to1, from1;
|
||||
rtx to1 = NULL_RTX, from1;
|
||||
|
||||
while (data->len >= size)
|
||||
{
|
||||
|
@ -4699,8 +4699,8 @@ store_constructor (exp, target, align, cleared, size)
|
|||
tree elttype = TREE_TYPE (type);
|
||||
int const_bounds_p = (host_integerp (TYPE_MIN_VALUE (domain), 0)
|
||||
&& host_integerp (TYPE_MAX_VALUE (domain), 0));
|
||||
HOST_WIDE_INT minelt;
|
||||
HOST_WIDE_INT maxelt;
|
||||
HOST_WIDE_INT minelt = 0;
|
||||
HOST_WIDE_INT maxelt = 0;
|
||||
|
||||
/* If we have constant bounds for the range of the type, get them. */
|
||||
if (const_bounds_p)
|
||||
|
|
|
@ -3773,7 +3773,7 @@ static void
|
|||
mark_regs_live_at_end (set)
|
||||
regset set;
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
/* If exiting needs the right stack value, consider the stack pointer
|
||||
live at the end of the function. */
|
||||
|
|
|
@ -3564,13 +3564,15 @@ instantiate_decls (fndecl, valid_only)
|
|||
for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl))
|
||||
{
|
||||
HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl));
|
||||
HOST_WIDE_INT size_rtl;
|
||||
|
||||
instantiate_decl (DECL_RTL (decl), size, valid_only);
|
||||
|
||||
/* If the parameter was promoted, then the incoming RTL mode may be
|
||||
larger than the declared type size. We must use the larger of
|
||||
the two sizes. */
|
||||
size = MAX (GET_MODE_SIZE (GET_MODE (DECL_INCOMING_RTL (decl))), size);
|
||||
size_rtl = GET_MODE_SIZE (GET_MODE (DECL_INCOMING_RTL (decl)));
|
||||
size = MAX (size_rtl, size);
|
||||
instantiate_decl (DECL_INCOMING_RTL (decl), size, valid_only);
|
||||
}
|
||||
|
||||
|
|
|
@ -1026,14 +1026,15 @@ emit_swap_insn (insn, regstack, reg)
|
|||
swap with, omit the swap. */
|
||||
|
||||
if (GET_CODE (i1dest) == REG && REGNO (i1dest) == FIRST_STACK_REG
|
||||
&& GET_CODE (i1src) == REG && REGNO (i1src) == hard_regno - 1
|
||||
&& GET_CODE (i1src) == REG
|
||||
&& REGNO (i1src) == (unsigned) hard_regno - 1
|
||||
&& find_regno_note (i1, REG_DEAD, FIRST_STACK_REG) == NULL_RTX)
|
||||
return;
|
||||
|
||||
/* If the previous insn wrote to the reg we are to swap with,
|
||||
omit the swap. */
|
||||
|
||||
if (GET_CODE (i1dest) == REG && REGNO (i1dest) == hard_regno
|
||||
if (GET_CODE (i1dest) == REG && REGNO (i1dest) == (unsigned) hard_regno
|
||||
&& GET_CODE (i1src) == REG && REGNO (i1src) == FIRST_STACK_REG
|
||||
&& find_regno_note (i1, REG_DEAD, FIRST_STACK_REG) == NULL_RTX)
|
||||
return;
|
||||
|
@ -1969,7 +1970,7 @@ subst_asm_stack_regs (insn, regstack)
|
|||
if (regno < 0)
|
||||
abort ();
|
||||
|
||||
if (regno != REGNO (recog_data.operand[i]))
|
||||
if ((unsigned int) regno != REGNO (recog_data.operand[i]))
|
||||
{
|
||||
/* recog_data.operand[i] is not in the right place. Find
|
||||
it and swap it with whatever is already in I's place.
|
||||
|
@ -2071,7 +2072,7 @@ subst_asm_stack_regs (insn, regstack)
|
|||
|
||||
for (j = 0; j < n_outputs; j++)
|
||||
if (STACK_REG_P (recog_data.operand[j])
|
||||
&& REGNO (recog_data.operand[j]) == i)
|
||||
&& REGNO (recog_data.operand[j]) == (unsigned) i)
|
||||
{
|
||||
regstack->reg[++regstack->top] = i;
|
||||
SET_HARD_REG_BIT (regstack->reg_set, i);
|
||||
|
|
|
@ -72,7 +72,7 @@ static void flags_set_1 PARAMS ((rtx, rtx, void *));
|
|||
|
||||
static int try_auto_increment PARAMS ((rtx, rtx, rtx, rtx, HOST_WIDE_INT, int));
|
||||
static int find_matches PARAMS ((rtx, struct match *));
|
||||
static void replace_in_call_usage PARAMS ((rtx *, int, rtx, rtx));
|
||||
static void replace_in_call_usage PARAMS ((rtx *, unsigned int, rtx, rtx));
|
||||
static int fixup_match_1 PARAMS ((rtx, rtx, rtx, rtx, rtx, int, int, int, FILE *))
|
||||
;
|
||||
static int reg_is_remote_constant_p PARAMS ((rtx, rtx, rtx));
|
||||
|
@ -1619,7 +1619,7 @@ find_matches (insn, matchp)
|
|||
static void
|
||||
replace_in_call_usage (loc, dst_reg, src, insn)
|
||||
rtx *loc;
|
||||
int dst_reg;
|
||||
unsigned int dst_reg;
|
||||
rtx src;
|
||||
rtx insn;
|
||||
{
|
||||
|
|
10
gcc/reload.c
10
gcc/reload.c
|
@ -1039,7 +1039,7 @@ push_reload (in, out, inloc, outloc, class,
|
|||
order as the reloads. Thus if the outer reload is also of type
|
||||
RELOAD_OTHER, we are guaranteed that this inner reload will be
|
||||
output before the outer reload. */
|
||||
push_reload (SUBREG_REG (in), NULL_RTX, &SUBREG_REG (in), NULL_RTX,
|
||||
push_reload (SUBREG_REG (in), NULL_RTX, &SUBREG_REG (in), (rtx *)0,
|
||||
in_class, VOIDmode, VOIDmode, 0, 0, opnum, type);
|
||||
dont_remove_subreg = 1;
|
||||
}
|
||||
|
@ -6698,14 +6698,14 @@ regno_clobbered_p (regno, insn, mode, sets)
|
|||
enum machine_mode mode;
|
||||
int sets;
|
||||
{
|
||||
int nregs = HARD_REGNO_NREGS (regno, mode);
|
||||
int endregno = regno + nregs;
|
||||
unsigned int nregs = HARD_REGNO_NREGS (regno, mode);
|
||||
unsigned int endregno = regno + nregs;
|
||||
|
||||
if ((GET_CODE (PATTERN (insn)) == CLOBBER
|
||||
|| (sets && GET_CODE (PATTERN (insn)) == SET))
|
||||
&& GET_CODE (XEXP (PATTERN (insn), 0)) == REG)
|
||||
{
|
||||
int test = REGNO (XEXP (PATTERN (insn), 0));
|
||||
unsigned int test = REGNO (XEXP (PATTERN (insn), 0));
|
||||
|
||||
return test >= regno && test < endregno;
|
||||
}
|
||||
|
@ -6721,7 +6721,7 @@ regno_clobbered_p (regno, insn, mode, sets)
|
|||
|| (sets && GET_CODE (PATTERN (insn)) == SET))
|
||||
&& GET_CODE (XEXP (elt, 0)) == REG)
|
||||
{
|
||||
int test = REGNO (XEXP (elt, 0));
|
||||
unsigned int test = REGNO (XEXP (elt, 0));
|
||||
|
||||
if (test >= regno && test < endregno)
|
||||
return 1;
|
||||
|
|
|
@ -601,7 +601,7 @@ replace_pseudos_in_call_usage (loc, mem_mode, usage)
|
|||
code = GET_CODE (x);
|
||||
if (code == REG)
|
||||
{
|
||||
int regno = REGNO (x);
|
||||
unsigned int regno = REGNO (x);
|
||||
|
||||
if (regno < FIRST_PSEUDO_REGISTER)
|
||||
return;
|
||||
|
@ -8585,7 +8585,8 @@ static void
|
|||
reload_combine ()
|
||||
{
|
||||
rtx insn, set;
|
||||
int first_index_reg = -1, last_index_reg;
|
||||
int first_index_reg = -1;
|
||||
int last_index_reg = 0;
|
||||
int i;
|
||||
unsigned int r;
|
||||
int last_label_ruid;
|
||||
|
@ -8816,7 +8817,7 @@ reload_combine ()
|
|||
rtx usage_rtx = XEXP (XEXP (link, 0), 0);
|
||||
if (GET_CODE (usage_rtx) == REG)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
unsigned int start_reg = REGNO (usage_rtx);
|
||||
unsigned int num_regs =
|
||||
HARD_REGNO_NREGS (start_reg, GET_MODE (usage_rtx));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* Instruction scheduling pass. This file computes dependencies between
|
||||
instructions.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
|
||||
and currently maintained by, Jim Wilson (wilson@cygnus.com)
|
||||
|
||||
|
@ -197,7 +197,6 @@ add_dependence (insn, elem, dep_type)
|
|||
{
|
||||
rtx link, next;
|
||||
int present_p;
|
||||
enum reg_note present_dep_type;
|
||||
rtx cond1, cond2;
|
||||
|
||||
/* Don't depend an insn on itself. */
|
||||
|
@ -271,10 +270,13 @@ add_dependence (insn, elem, dep_type)
|
|||
dramatically for some code. */
|
||||
if (true_dependency_cache != NULL)
|
||||
{
|
||||
enum reg_note present_dep_type = 0;
|
||||
|
||||
if (anti_dependency_cache == NULL || output_dependency_cache == NULL)
|
||||
abort ();
|
||||
if (TEST_BIT (true_dependency_cache[INSN_LUID (insn)], INSN_LUID (elem)))
|
||||
present_dep_type = 0;
|
||||
/* Do nothing (present_set_type is already 0). */
|
||||
;
|
||||
else if (TEST_BIT (anti_dependency_cache[INSN_LUID (insn)],
|
||||
INSN_LUID (elem)))
|
||||
present_dep_type = REG_DEP_ANTI;
|
||||
|
|
|
@ -2196,7 +2196,7 @@ simplify_subreg (outermode, op, innermode, byte)
|
|||
if (CONSTANT_P (op))
|
||||
{
|
||||
int offset, part;
|
||||
unsigned HOST_WIDE_INT val;
|
||||
unsigned HOST_WIDE_INT val = 0;
|
||||
|
||||
/* ??? This code is partly redundant with code bellow, but can handle
|
||||
the subregs of floats and similar corner cases.
|
||||
|
@ -2231,7 +2231,7 @@ simplify_subreg (outermode, op, innermode, byte)
|
|||
|
||||
/* We can't handle this case yet. */
|
||||
if (GET_MODE_BITSIZE (outermode) >= HOST_BITS_PER_WIDE_INT)
|
||||
return NULL;
|
||||
return NULL_RTX;
|
||||
|
||||
part = offset >= HOST_BITS_PER_WIDE_INT;
|
||||
if ((BITS_PER_WORD > HOST_BITS_PER_WIDE_INT
|
||||
|
@ -2253,7 +2253,7 @@ simplify_subreg (outermode, op, innermode, byte)
|
|||
|
||||
/* We don't handle synthetizing of non-integral constants yet. */
|
||||
if (GET_MODE_CLASS (outermode) != MODE_INT)
|
||||
return NULL;
|
||||
return NULL_RTX;
|
||||
|
||||
if (BYTES_BIG_ENDIAN || WORDS_BIG_ENDIAN)
|
||||
{
|
||||
|
@ -2322,8 +2322,8 @@ simplify_subreg (outermode, op, innermode, byte)
|
|||
return NULL_RTX;
|
||||
/* Bail out in case resulting subreg would be incorrect. */
|
||||
if (final_offset % GET_MODE_SIZE (outermode)
|
||||
|| final_offset >= GET_MODE_SIZE (innermostmode))
|
||||
return NULL;
|
||||
|| (unsigned) final_offset >= GET_MODE_SIZE (innermostmode))
|
||||
return NULL_RTX;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2339,7 +2339,7 @@ simplify_subreg (outermode, op, innermode, byte)
|
|||
if (offset == final_offset)
|
||||
final_offset = 0;
|
||||
else
|
||||
return NULL;
|
||||
return NULL_RTX;
|
||||
}
|
||||
|
||||
/* Recurse for futher possible simplifications. */
|
||||
|
|
Loading…
Add table
Reference in a new issue