diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-03-28 17:01:49 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-03-28 12:01:49 -0500 |
commit | 13eb1f7f0de383603d383c0644873ac8cb1afc62 (patch) | |
tree | 8ddabb9ddd5277b376e6de09f3dacadff7114776 /gcc/expr.c | |
parent | 5a97f7c2d7fa5680ef0942f27ddb2d399dac2227 (diff) | |
download | gcc-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.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -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) |