Commit 9ceca302 by Olivier Hainque Committed by Richard Kenner

expr.c (highest_pow2_factor): Return unsigned.

        * expr.c (highest_pow2_factor): Return unsigned.
        * expr.h (offset_address): Likewise.
        * emit-rtl.c (offset_address): POW2 argument now unsigned.

From-SVN: r65589
parent 712b7a05
2003-04-14 Olivier Hainque <hainque@act-europe.fr>
* expr.c (highest_pow2_factor): Return unsigned.
* expr.h (offset_address): Likewise.
* emit-rtl.c (offset_address): POW2 argument now unsigned.
2003-04-14 Roger Sayle <roger@eyesopen.com> 2003-04-14 Roger Sayle <roger@eyesopen.com>
* builtins.c (expand_builtin_strlen): Evaluate the lengths of * builtins.c (expand_builtin_strlen): Evaluate the lengths of
......
...@@ -2314,7 +2314,7 @@ rtx ...@@ -2314,7 +2314,7 @@ rtx
offset_address (memref, offset, pow2) offset_address (memref, offset, pow2)
rtx memref; rtx memref;
rtx offset; rtx offset;
HOST_WIDE_INT pow2; unsigned HOST_WIDE_INT pow2;
{ {
rtx new, addr = XEXP (memref, 0); rtx new, addr = XEXP (memref, 0);
...@@ -2342,8 +2342,7 @@ offset_address (memref, offset, pow2) ...@@ -2342,8 +2342,7 @@ offset_address (memref, offset, pow2)
we don't know. */ we don't know. */
MEM_ATTRS (new) MEM_ATTRS (new)
= get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), 0, 0, = get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), 0, 0,
MIN (MEM_ALIGN (memref), MIN (MEM_ALIGN (memref), pow2 * BITS_PER_UNIT),
(unsigned HOST_WIDE_INT) pow2 * BITS_PER_UNIT),
GET_MODE (new)); GET_MODE (new));
return new; return new;
} }
......
...@@ -166,8 +166,11 @@ static rtx store_field PARAMS ((rtx, HOST_WIDE_INT, ...@@ -166,8 +166,11 @@ static rtx store_field PARAMS ((rtx, HOST_WIDE_INT,
tree, enum machine_mode, int, tree, tree, enum machine_mode, int, tree,
int)); int));
static rtx var_rtx PARAMS ((tree)); static rtx var_rtx PARAMS ((tree));
static HOST_WIDE_INT highest_pow2_factor PARAMS ((tree));
static HOST_WIDE_INT highest_pow2_factor_for_type PARAMS ((tree, tree)); static unsigned HOST_WIDE_INT highest_pow2_factor PARAMS ((tree));
static unsigned HOST_WIDE_INT highest_pow2_factor_for_type PARAMS ((tree,
tree));
static int is_aligning_offset PARAMS ((tree, tree)); static int is_aligning_offset PARAMS ((tree, tree));
static rtx expand_increment PARAMS ((tree, int, int)); static rtx expand_increment PARAMS ((tree, int, int));
static rtx do_store_flag PARAMS ((tree, rtx, enum machine_mode, int)); static rtx do_store_flag PARAMS ((tree, rtx, enum machine_mode, int));
...@@ -6335,11 +6338,11 @@ check_max_integer_computation_mode (exp) ...@@ -6335,11 +6338,11 @@ check_max_integer_computation_mode (exp)
/* Return the highest power of two that EXP is known to be a multiple of. /* Return the highest power of two that EXP is known to be a multiple of.
This is used in updating alignment of MEMs in array references. */ This is used in updating alignment of MEMs in array references. */
static HOST_WIDE_INT static unsigned HOST_WIDE_INT
highest_pow2_factor (exp) highest_pow2_factor (exp)
tree exp; tree exp;
{ {
HOST_WIDE_INT c0, c1; unsigned HOST_WIDE_INT c0, c1;
switch (TREE_CODE (exp)) switch (TREE_CODE (exp))
{ {
...@@ -6405,12 +6408,12 @@ highest_pow2_factor (exp) ...@@ -6405,12 +6408,12 @@ highest_pow2_factor (exp)
/* Similar, except that it is known that the expression must be a multiple /* Similar, except that it is known that the expression must be a multiple
of the alignment of TYPE. */ of the alignment of TYPE. */
static HOST_WIDE_INT static unsigned HOST_WIDE_INT
highest_pow2_factor_for_type (type, exp) highest_pow2_factor_for_type (type, exp)
tree type; tree type;
tree exp; tree exp;
{ {
HOST_WIDE_INT type_align, factor; unsigned HOST_WIDE_INT type_align, factor;
factor = highest_pow2_factor (exp); factor = highest_pow2_factor (exp);
type_align = TYPE_ALIGN (type) / BITS_PER_UNIT; type_align = TYPE_ALIGN (type) / BITS_PER_UNIT;
......
...@@ -642,7 +642,7 @@ extern rtx adjust_automodify_address_1 PARAMS ((rtx, enum machine_mode, ...@@ -642,7 +642,7 @@ extern rtx adjust_automodify_address_1 PARAMS ((rtx, enum machine_mode,
/* Return a memory reference like MEMREF, but whose address is changed by /* Return a memory reference like MEMREF, but whose address is changed by
adding OFFSET, an RTX, to it. POW2 is the highest power of two factor adding OFFSET, an RTX, to it. POW2 is the highest power of two factor
known to be in OFFSET (possibly 1). */ known to be in OFFSET (possibly 1). */
extern rtx offset_address PARAMS ((rtx, rtx, HOST_WIDE_INT)); extern rtx offset_address PARAMS ((rtx, rtx, unsigned HOST_WIDE_INT));
/* Return a memory reference like MEMREF, but with its address changed to /* Return a memory reference like MEMREF, but with its address changed to
ADDR. The caller is asserting that the actual piece of memory pointed ADDR. The caller is asserting that the actual piece of memory pointed
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment