+2002-09-08 Jan Hubicka <jh@suse.cz>
+
+ * emit-rtl.c (set_mem_attributes_minus_bitpos): Fix array_ref
+ handling.
+
+ * loop.c (loop_gics_reduce): Emit addition after.
+
2002-09-08 Alan Modra <amodra@bigpond.net.au>
* varasm.c (default_assemble_visibility): Rename from
that subsequent clobbers will be dependent on it.
2002-09-07 Igor Shevlyakov <igor@microunity.com>
-
+
* combine.c (simplify_shift_const): Calculate rotate count
correctly for vector operands.
* c-typeck.c (c_tree_expr_nonnegative_p): New function.
(build_binary_op): Call c_tree_expr_nonnegative_p rather than
- tree_expr_nonnegative_p.
+ tree_expr_nonnegative_p.
(build_conditional_expr): Likewise.
* c-tree.h (c_tree_expr_nonnegative_p): Declare.
2002-09-06 Jason Thorpe <thorpej@wasabisystems.com>
- * config/arm/arm-protos.h (arm_gen_return_addr_mask): New
- prototype.
+ * config/arm/arm-protos.h (arm_gen_return_addr_mask): New
+ prototype.
* config/arm/arm.c (arm_gen_return_addr_mask): New function.
* config/arm/arm.h (MASK_RETURN_ADDR): Use arm_gen_return_addr_mask
if not APCS26 and not Thumb or ARMv4-or-higher. Use gen_int_mode
2002-09-06 Ulrich Weigand <uweigand@de.ibm.com>
- * config/s390/s390.md ("*adddi3_cc", "*adddi3_cconly",
+ * config/s390/s390.md ("*adddi3_cc", "*adddi3_cconly",
"*adddi3_cconly2", "*adddi3_64", "*adddi3_31", "adddi3",
- "*addsi3_carry1_cc", "*addsi3_carry1_cconly",
+ "*addsi3_carry1_cc", "*addsi3_carry1_cconly",
"*addsi3_carry2_cc", "*addsi3_carry2_cconly",
"*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2", "addsi3",
- "adddf3", "*adddf3", "*adddf3_ibm",
+ "adddf3", "*adddf3", "*adddf3_ibm",
"addsf3", "*addsf3", "*addsf3_ibm",
"muldi3", "mulsi3", "mulsidi3",
"muldf3", "*muldf3", "*muldf3_ibm",
2002-09-05 Jason Thorpe <thorpej@wasabisystems.com>
* config/arm/arm.c (arm_return_in_memory): Implement ATPCS
- return-in-memory rules.
+ return-in-memory rules.
* config/arm/arm.h (ARM_FLAG_ATPCS, TARGET_ATPCS): Define.
2002-09-05 David Edelsohn <edelsohn@gnu.org>
* real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is
not a compile-time constant for the non-IBM case.
* config/arm/arm-protos.h (arm_float_words_big_endian): New
- prototype.
+ prototype.
* config/arm/arm.c (arm_float_words_big_endian): New function.
* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __VFP_FP__
- if TARGET_VFP and not TARGET_HARD_FLOAT.
- (ARM_FLAG_VFP, TARGET_VFP): Define.
+ if TARGET_VFP and not TARGET_HARD_FLOAT.
+ (ARM_FLAG_VFP, TARGET_VFP): Define.
(FLOAT_WORDS_BIG_ENDIAN): Use arm_float_words_big_endian.
2002-09-05 David Edelsohn <edelsohn@gnu.org>
double-word scratch register.
config/s390/s390.md ("reload_indi", "reload_insi"): Adapt.
- ("*tmqi_ext", "*tmdi_mem", "*tmsi_mem", "*tmhi_mem", "*tmqi_mem",
+ ("*tmqi_ext", "*tmdi_mem", "*tmsi_mem", "*tmhi_mem", "*tmqi_mem",
"*cli"): Replace s_operand by memory_operand.
("cmpstrdi", "cmpstrsi"): Replace s_operand by general_operand.
* config/m68hc11/m68hc11.c (print_operand): Likewise.
* config/m68k/hp320.h (PRINT_OPERAND, ASM_OUTPUT_FLOAT_OPERAND,
ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND): Likewise.
- * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND,
+ * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND,
ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND): Likewise.
* config/m68k/sun2o4.h (ASM_OUTPUT_FLOAT_OPERAND,
ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
* config/s390/s390.md ("movti"): Add Q->Q alternative.
("*movdi_64", "*movdi_31", "*movsi", "movhi", "movqi_64",
"movqi", "*movdf_64", "*movdf_31", "*movsf"): Likewise.
-
- ("*movti_ss", "*movdi_ss", "*movsi_ss", "*movdf_ss",
+
+ ("*movti_ss", "*movdi_ss", "*movsi_ss", "*movdf_ss",
"*movsf_ss"): Remove.
2002-09-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
PR objc/5956:
* objc/objc-act.c (build_typed_selector_reference): Fix typo which
- was causing the new selector never to match the existing ones
- (Patch by Alexander Malmberg <alexander@malmberg.org>).
+ was causing the new selector never to match the existing ones
+ (Patch by Alexander Malmberg <alexander@malmberg.org>).
2002-09-03 Graham Stott <graham.stott@btinternet.com>
stuff.
(ip2k_gen_unsigned_comp_branch): Handle CONST_INT and
CONST_DOUBLE constants.
-
+
2002-08-30 Jason Thorpe <thorpej@wasabisystems.com>
* config/alpha/alpha.h (TARGET_CPU_CPP_BUILTINS): Move language-
(RTX_COSTS): Handle UMOD and UDIV. Tune MULT for v850e.
(TARGET_SWITCHES): Add strict-align.
(TARGET_STRICT_ALIGN): New.
- (MASK_DEFAULT, STRICT_ALIGNMENT): Redefine.
+ (MASK_DEFAULT, STRICT_ALIGNMENT): Redefine.
* config/v850/t-v850 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES):
Define.
(LIB1ASMFUNCS): Add v850_negdi2, v850_cmpdi2, v850_ucmpdi2,
* c-opts.c (COMMAND_LINE_OPTIONS): Add -Wabi.
(c_common_decode_option): Handle it.
* doc/invoke.texi: Document -Wabi.
-
+
Tue Aug 27 23:03:52 2002 Nicola Pero <n.pero@mi.flashnet.it>
* c-common.c (warn_undeclared_selector): New variable.
2002-08-27 Gabriel Dos Reis <gdr@soliton.integrable-solutions.net>
* doc/cpp.texi (Common Predefined Macros): Don't mess with table
- delimiter.
+ delimiter.
2002-08-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
2002-08-26 Ulrich Weigand <uweigand@de.ibm.com>
- * config/s390/s390-protos.h (s390_function_prologue,
+ * config/s390/s390-protos.h (s390_function_prologue,
s390_function_epilogue): Remove.
config/s390/s390.c (s390_function_prologue, s390_function_epilogue,
TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
config/s390/s390.c (s390_split_branches, s390_chunkify_pool): Adapt
to being called from MACHINE_DEPENDENT_REORG. Update regs_ever_live.
- config/s390/s390.c (s390_frame_info): Inline save_fprs_p. Always
+ config/s390/s390.c (s390_frame_info): Inline save_fprs_p. Always
assume BASE_REGISTER and RETURN_REGNUM need to be saved.
(s390_emit_prologue): Assume RETURN_REGNUM to be saved iff
function is not a leaf function. Use save_gprs and restore_gprs.
do
{
+ tree index = TREE_OPERAND (t, 1);
+ tree array = TREE_OPERAND (t, 0);
+ tree domain = TYPE_DOMAIN (TREE_TYPE (array));
+ tree low_bound = (domain ? TYPE_MIN_VALUE (domain) : 0);
+ tree unit_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (array)));
+
+ /* We assume all arrays have sizes that are a multiple of a byte.
+ First subtract the lower bound, if any, in the type of the
+ index, then convert to sizetype and multiply by the size of the
+ array element. */
+ if (low_bound != 0 && ! integer_zerop (low_bound))
+ index = fold (build (MINUS_EXPR, TREE_TYPE (index),
+ index, low_bound));
+
+ /* If the index has a self-referential type, pass it to a
+ WITH_RECORD_EXPR; if the component size is, pass our
+ component to one. */
+ if (! TREE_CONSTANT (index)
+ && contains_placeholder_p (index))
+ index = build (WITH_RECORD_EXPR, TREE_TYPE (index), index, t);
+ if (! TREE_CONSTANT (unit_size)
+ && contains_placeholder_p (unit_size))
+ unit_size = build (WITH_RECORD_EXPR, sizetype,
+ unit_size, array);
+
off_tree
= fold (build (PLUS_EXPR, sizetype,
fold (build (MULT_EXPR, sizetype,
- TREE_OPERAND (t, 1),
- TYPE_SIZE_UNIT (TREE_TYPE (t)))),
+ index,
+ unit_size)),
off_tree));
t = TREE_OPERAND (t, 0);
}