aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2000-03-28 17:01:49 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2000-03-28 12:01:49 -0500
commit13eb1f7f0de383603d383c0644873ac8cb1afc62 (patch)
tree8ddabb9ddd5277b376e6de09f3dacadff7114776 /gcc/expr.c
parent5a97f7c2d7fa5680ef0942f27ddb2d399dac2227 (diff)
downloadgcc-13eb1f7f0de383603d383c0644873ac8cb1afc62.zip
gcc-13eb1f7f0de383603d383c0644873ac8cb1afc62.tar.gz
gcc-13eb1f7f0de383603d383c0644873ac8cb1afc62.tar.bz2
expr.c (store_constructor): SIZE now signed.
* expr.c (store_constructor): SIZE now signed. For EXPR_SIZE, don't evaluate size; just needed if constant. * fold-const.c (fold): Fix a number of cases when folded tree is wrong type. * function.c (flush_addressof): Reenable. * tree.h (flush_addressof): Likewise. * toplev.c (independent_decode_option): Look at strings_processed. * config/alpha/alpha.h (MINIMUM_ATOMIC_ALIGNMENT): Cast to unsigned. From-SVN: r32783
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index fc39068..447382b 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -147,7 +147,7 @@ static void store_constructor_field PARAMS ((rtx, unsigned HOST_WIDE_INT,
HOST_WIDE_INT, enum machine_mode,
tree, tree, unsigned int, int));
static void store_constructor PARAMS ((tree, rtx, unsigned int, int,
- unsigned HOST_WIDE_INT));
+ HOST_WIDE_INT));
static rtx store_field PARAMS ((rtx, HOST_WIDE_INT,
HOST_WIDE_INT, enum machine_mode,
tree, enum machine_mode, int,
@@ -4121,11 +4121,11 @@ store_constructor (exp, target, align, cleared, size)
rtx target;
unsigned int align;
int cleared;
- unsigned HOST_WIDE_INT size;
+ HOST_WIDE_INT size;
{
tree type = TREE_TYPE (exp);
#ifdef WORD_REGISTER_OPERATIONS
- rtx exp_size = expr_size (exp);
+ HOST_WIDE_INT exp_size = int_size_in_bytes (type);
#endif
/* We know our target cannot conflict, since safe_from_p has been called. */
@@ -4285,8 +4285,8 @@ store_constructor (exp, target, align, cleared, size)
&& bitpos % BITS_PER_WORD == 0
&& GET_MODE_CLASS (mode) == MODE_INT
&& TREE_CODE (value) == INTEGER_CST
- && GET_CODE (exp_size) == CONST_INT
- && bitpos + BITS_PER_WORD <= INTVAL (exp_size) * BITS_PER_UNIT)
+ && exp_size >= 0
+ && bitpos + BITS_PER_WORD <= exp_size * BITS_PER_UNIT)
{
tree type = TREE_TYPE (value);
if (TYPE_PRECISION (type) < BITS_PER_WORD)