Richard Kenner [Thu, 12 Aug 1993 23:02:25 +0000 (19:02 -0400)]
(attribute "type"): Add new type, "branch".
(attribute "length"): New attribute; put on all insns that don't have default
length.
(branch patterns): If conditional branch won't reach, take conditional branch
around an unconditional branch.
(plus): Split (plus (COMPARISON FOO ...) ...) at FOO.
Jim Wilson [Thu, 12 Aug 1993 17:52:48 +0000 (10:52 -0700)]
(legitimize_pic_address): Delete 4th arg SCRATCH.
Fix all callers.
(emit_move_sequence): Delete 3rd arg SCRATCH_REG. Fix all
callers. If operand1 is an invalid PIC address, then legitimize
it before doing anything else.
Jeff Law [Wed, 11 Aug 1993 23:49:36 +0000 (17:49 -0600)]
reorg.c (try_merge_delay_insns): Fix typo.
* reorg.c (try_merge_delay_insns): Fix typo.
(fill_simple_delay_slots): Only access the JUMP_LABEL field
if the INSN needing delay slots is a JUMP_INSN.
Richard Stallman [Wed, 11 Aug 1993 05:22:55 +0000 (05:22 +0000)]
(SLOW_UNALIGNED_ACCESS): Define, but allow override.
(store_bit_field): Test that instead of STRICT_ALIGNMENT.
Also, allow fetching as non-bitfield if memory is aligned enough.
(extract_bit_field): Install code here like that in store_bit_field.
(expand_assignment): If WANT_VALUE is 0, return NULL.
(store_expr): Likewise.
Rename arg SUGGEST_REG to WANT_VALUE.
Never return TARGET if WANT_VALUE unless BLKmode.
Instead, return TEMP or a value copied from TARGET.
Pass 0 for WANT_VALUE in recursive calls that ignore value.
(expand_expr, case PLUS_EXPR): Goto binop2 not
both_summands if we should not be returning a plus.
(do_tablejump) [PIC_CASE_VECTOR_ADDRESS]: If pic,
copy INDEX to a register early, to avoid invalid address later.
Richard Kenner [Sat, 7 Aug 1993 11:42:21 +0000 (07:42 -0400)]
(push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem)) the same.
(push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem))
the same.
If we have (subreg:M1 (mem:M2 ...) ...), never do anything special if M1
and M2 are the same size.
(output_init_element): Call digest_init before calling output_constant.
(output_init_element): Call digest_init before
calling output_constant. Always pass 0, 0 for last 2 args
to digest_init.
(build_binary_op): Warn about ordered comparison
between pointers to complete and incomplete types.
(digest_init): No error for a STRING_CST that already
went through digest_init.
(parser_build_binary_op): Generate a NON_LVALUE_EXPR, not NOP_EXPR,
around a constant value.
Jeff Law [Thu, 5 Aug 1993 05:45:32 +0000 (23:45 -0600)]
toplev.c (rest_of_compilation): If not optimizing, turn off DECL_INLINE for functions declared as inline.
* toplev.c (rest_of_compilation): If not optimizing, turn off
DECL_INLINE for functions declared as inline. Avoid turning on
DECL_INLINE when -finline-functions is used without -O.
Richard Kenner [Tue, 3 Aug 1993 21:31:46 +0000 (17:31 -0400)]
(force_to_mode): Now pass actual AND mask instead of number off;
generalize appropriately.
Move most cases from simplify_and_const_int in.
(simplify_and_const_int): Remove most code from here; call force_to_mode
instead.
(subst, make_extraction, make_compound_operation): Change calls to
force_to_mode.
(make_field_assignment): Likewise.
(simplify_comparison): Add call to force_to_mode when doing a sign bit
comparison.
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.