Richard Kenner [Mon, 2 Aug 1993 22:52:56 +0000 (18:52 -0400)]
(subst): Move simple operations inside IF_THEN_ELSE if the IF_THEN_ELSE is in the second operand as well as the first.
(subst): Move simple operations inside IF_THEN_ELSE if the IF_THEN_ELSE is in
the second operand as well as the first.
(subst, case NEG): Use plus_constant to make a PLUS.
(subst, case MINUS): Simplify (minus 1 (comparison foo bar)).
(subst, case EQ): Add a number of missing cases where comparisons may be
replaced with arithmetic or logical ops.
(subst, case IF_THEN_ELSE): Handle (if_then_else COND (OP Z C1) Z) in a more
general manner.
(simplify_and_const_int): Make AND with gen_binary in case we can simplify it.
(build_shared_structure_initializer):
Call default_conversion for NAME.
(add_objc_string): Make an ADDR_EXPR to return.
(init_objc_symtab): Make ADDR_EXPR for UOBJC_SELECTOR_TABLE_decl.
Build all CONSTRUCTORs with types.
(build_constructor): New function. All CONSTRUCTOR builds changed.
(init_def_list, init_objc_symtab): New arg TYPE.
(init_module_descriptor): Likewise.
(init_objc_symtab): Pass TYPE arg to init_def_list.
(generate_objc_symtab_decl): Pass TYPE arg to init_objc_symtab.
(build_module_descriptor): Pass TYPE arg to init_module_descriptor.
(build_descriptor_table_initializer): New arg TYPE.
(generate_method_descriptors): Pass TYPE arg to
build_descriptor_table_initializer.
(generate_protocols): Pass TYPE arg to build_protocol_initializer.
(uild_protocol_initializer): New arg TYPE.
(build_ivar_list_initializer): New arg TYPE.
(generate_ivar_lists): Pass TYPE arg to build_ivar_list_initializer.
(build_dispatch_table_initializer): New arg TYPE.
(generate_dispatch_tables): Pass TYPE arg to
build_dispatch_table_initializer.
(build_category_initializer): New arg TYPE.
(build_shared_structure_initializer): New arg TYPE.
(generate_category): Pass TYPE arg to build_category_initializer.
(generate_shared_structures): Pass TYPE arg to
build_shared_structure_initializer.
Richard Kenner [Fri, 30 Jul 1993 10:49:23 +0000 (06:49 -0400)]
(mult_is_very_cheap): Delete.
(mult_cost): Delete.
(init_expmed): Delete computation of mult_cost and mult_is_very_cheap.
(expand_mult): Compute mult_cost here for every constant multiplier.
(synth_mult): Return found algorithms through a struct pointer.
Richard Kenner [Fri, 30 Jul 1993 10:47:51 +0000 (06:47 -0400)]
Remove change of July 21.
(this_basic_block): New variable.
(combine_instructions): Set it.
(try_combine, distribute_links): Use it and basic_block_head to see if
we've gone to a new basic block instead of trying to reproduce
calculation done in flow.
Richard Stallman [Fri, 30 Jul 1993 06:52:04 +0000 (06:52 +0000)]
(push_init_level): For braces around scalar, just warn.
(process_init_element): Special handling for {"foo"}.
(struct constructor_stack): New field `replacement_value'.
(push_init_level, really_start_incremental_init): Clear new field.
(pop_init_level): Return the replacement_value if any.
At top level in initializer, output that value,
and set the array size from it.
(digest_init): Delete arg TAIL. Fix all calls.
(convert_for_assignment): Mismatch in signedness
of pointer targets should not inhibit warnings for const mismatch.
Richard Kenner [Wed, 28 Jul 1993 19:38:13 +0000 (15:38 -0400)]
(copy_for_inline, case LABEL_REF): Properly copy LABEL_REF with LABEL_REF_NONLOCAL_P set.
(copy_for_inline, case LABEL_REF): Properly copy LABEL_REF
with LABEL_REF_NONLOCAL_P set.
Copy LABEL_OUTSIDE_LOOP_P flag.
(copy_rtx_and_substitute, case LABEL_REF): Likewise.
(copy_rtx_and_substitute, case CONST): Make recursive call for a LABEL_REF in
the constant pool.
Jim Wilson [Wed, 28 Jul 1993 17:15:25 +0000 (10:15 -0700)]
(assign_parms): Pass extra argument SIZE to move_block_from_reg calls.
(assign_parms): Pass extra argument SIZE to
move_block_from_reg calls.
(locate_and_pad_parm): For !ARGS_GROW_DOWNWARD case, move downward
padding pad_below call after round_up call.
expmed.c (store_split_bitfield): Fix handling of bitfields that cross word boundaries...
* expmed.c (store_split_bitfield): Fix handling of bitfields that
cross word boundaries, can only handle a word at a time.
(extract_split_bitfield): Likewise.
Richard Stallman [Tue, 27 Jul 1993 05:57:26 +0000 (05:57 +0000)]
(set_init_index): Add pedantic warning.
(set_init_label): Likewise.
(digest_init): Add `static' to definition.
(start_init): Fill in p->next.
Handle gaps in record initializers.
(constructor_bit_index): New variable.
(constructor_stack): New field bit_index.
(really_start_incremental_init, push_init_level): Save and init it.
(pop_init_level): Restore it.
(output_init_element): Update constructor_bit_index.
Use it to output gaps.
(pop_init_level): Speed up by using constructor_bit_index.
(process_init_element): Accept STRING_CST for subarray.
Richard Stallman [Fri, 23 Jul 1993 19:19:04 +0000 (19:19 +0000)]
(cast_expr): Use new initializer parsing functions.
(initdcl, notype_initdcl): Likewise.
(init): Likewise.
(initlist_maybe_comma, initlist1): These replace initlist.
(initelt): New nonterminal.
Change specified index syntax to `[INDEX]='.
Change specified field syntax to `.NAME='.
Richard Stallman [Fri, 23 Jul 1993 18:50:33 +0000 (18:50 +0000)]
(output_constant_def_contents): New function.
(output_constant_def): Use it.
(deferred_constants): New list of constants not yet output.
(defer_addressed_constants): New function.
(output_deferred_addressed_constants): New function.
(make_decl_rtl): Don't ever replace old rtl;
instead, change its mode if necessary.
Richard Stallman [Fri, 23 Jul 1993 18:49:55 +0000 (18:49 +0000)]
Output most constructors an element at a time.
(digest_init): Deleted code for raw constructors.
(process_init_constructor): Function deleted.
(start_init, finish_init): New functions.
(really_start_incremental_init)
(push_init_level, check_init_type_bitfields, pop_init_level)
(set_init_index, set_init_label, process_init_element)
(output_init_element, output_pending_init_elements): New functions.
Jeff Law [Fri, 23 Jul 1993 02:59:46 +0000 (20:59 -0600)]
reorg.c (relax_delay_slots): Do not redirect a jump if doing so invalidates insns in the jump's delay slots.
* reorg.c (relax_delay_slots): Do not redirect a jump if doing so
invalidates insns in the jump's delay slots.
(redirect_with_delay_slots_safe_p): New function.
Jim Wilson [Wed, 21 Jul 1993 22:00:03 +0000 (15:00 -0700)]
(output_move_double): Only set highest_first if first reg of dest overlaps memory src address.
(output_move_double): Only set highest_first if first reg
of dest overlaps memory src address. Otherwise, if addreg1 set and
is same as second reg of dest, suppress trailing decrement.