Stan Cox [Fri, 17 May 1996 15:53:19 +0000 (15:53 +0000)]
i386.md (return, [...]): New patterns for emitting asm from prologue and epilogue RTL.
* i386.md (return, return_internal, prologue, prologue_set_got,
prologue_get_pc, epilogue, leave, pop): New patterns for emitting
asm from prologue and epilogue RTL.
Stan Cox [Fri, 17 May 1996 15:51:43 +0000 (15:51 +0000)]
(function_prologue, ix86_expand_prologue,
function_epilogue, ix86_expand_epilogue): Generate prologue and
epilogue as RTL (prior to scheduling) instead of emitting asm.
(override_options): If only -march is given, make it the default -mcpu.
Jeff Law [Wed, 8 May 1996 02:36:19 +0000 (20:36 -0600)]
h8300.c: Include obstack.h.
* h8300/h8300.c: Include obstack.h.
(bit_memory_operand): New function.
(print_operand): Append ":16" to a memory reference to
the tiny data area.
(h8300_tiny_data_p): New function.
(h8300_valid_machine_decl_attribute): Accept "tiny_data". Fix
typo.
(h8300_encode_label): New function.
(h8300_adjust_insn_length): References to the tiny data section
are two bytes shorter than normal accesses on the H8/300H.
* h8300/h8300.h (OK_FOR_U): Fix thinko.
(ENCODE_SECTION_INFO): Encode info for tiny data variables.
(STRIP_NAME_ENCODING): Define.
* h8300/h8300.md (movqi insn): Fix length for a constant load.
(movstrictqi): Likewise.
(movhi, movstricthi): Likewise.
(memory btst patterns): Add register to the constraints to keep
reload happy.
Jeff Law [Tue, 7 May 1996 21:11:47 +0000 (15:11 -0600)]
h8300.h (OK_FOR_U): (const (plus (symbol_ref) (const_int))) is a valid U operand if...
* h8300/h8300.h (OK_FOR_U): (const (plus (symbol_ref) (const_int)))
is a valid U operand if SYMBOL_REF_FLAG is set on the
SYMBOL_REF.
* h8300/h8300.md (memory btst patterns): New patterns.
Jeff Law [Tue, 7 May 1996 19:58:32 +0000 (13:58 -0600)]
h8300.c (h8300_eightbit_data_p): Renamed from h8300_tiny_data_p.
* h8300/h8300.c (h8300_eightbit_data_p): Renamed from
h8300_tiny_data_p.
(h8300_eightbit_data_p): Check for the "eightbit_data"
attribute instead of "tiny_data".
(h8300_valid_machine_decl_attribute): Likewise.
* h8300/h8300.h (ENCODE_SECTION_INFO): Call h8300_eightbit_data_p
instead of h8300_tiny_data_p.
Mike Stump [Mon, 6 May 1996 18:07:22 +0000 (18:07 +0000)]
expr.c (expand_increment): Add third parameter to know when to ignore the result value.
* expr.c (expand_increment): Add third parameter to know when to
ignore the result value.
(store_constructor): Ditto.
(expand_expr, case PREINCREMENT_EXPR): Ditto.
(expand_expr, case PREDECREMENT_EXPR): Ditto.
(expand_expr, case POSTINCREMENT_EXPR): Ditto.
(expand_expr, case POSTDECREMENT_EXPR): Ditto.
* tree.c (stabilize_reference): Always ignore the first operand of
COMPOUND_EXPRs.
Richard Kenner [Mon, 6 May 1996 02:10:03 +0000 (22:10 -0400)]
(gxx_include_dir): Change to $(prefix)/include/g++.
(old_gxx_include_dir): New - defined as $(libdir)/g++-include.
(cccp.o, cpplib.o): Also pass OLD_GPLUSPLUS_INCLUDE_DIR (set from
$(old_gxx_include_dir)).
(all_procs): Add arm7100.
(arm_override_options): Parse arm_select structure to determine selected
architecture and tuning parameters.
(output_option, output_options): New functions.
(arm_canonicalize_comparison): New function.
(arm_gen_movstrqi): Don't add a writeback of the index registers for the
last instructions.
(arm_select_cc_mode): Detect case where mode is carry out of unsigned
arithmetic.
(output_lcomm_directive): Use bss_section (), and use alignment rather than
rounding.
(get_arm_condition_code): Handle CC_Cmode.
(final_prescan_insn): Avoid boundary case where we would occasionally
inline MAX_INSNS_SKIPPED+1 insns. Allow call_insns to be inlined in APCS_32
mode if they are the last insn in the block.
(*addsi3_compare_op[12]): New insns.
(*compare_addsi2_op[01]): New insns.
(*addsi3_carryin, *addsi3_carryin_alt[12]): New insns.
(*cmp_ite1): Use arm_add_operand instead of arm_rhs_operand.
(ASM_OUTPUT_MI_THUNK): Moved here from aout.h. Rewrite to be
independent of the selected assembler, and to use optimal number of
instructions.
(target_cpu_name): Delete.
(TARGET_SWITCHES): Delete "be" and "le".
(TARGET_OPTIONS): Delete "cpu-", add "tune=".
(struct arm_cpu_select): New struct.
(PROCESSOR_DEFAULT, TARGET_CPU_DEFAULT): Define.
(EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Cmode.
(CANONICALIZE_COMPARISON): Define.
Jeff Law [Wed, 1 May 1996 22:41:55 +0000 (16:41 -0600)]
h8300.c (h8300_adjust_insn_length): Adjust the cost of shifts by small constant values.
* h8300/h8300.c (h8300_adjust_insn_length): Adjust the cost of
shifts by small constant values.
* h8300/h8300.md: Refine comments. Remove names from many
patterns which don't need them.
(compare insns): Don't underestimate lengths.
(andqi3 expander): Remove constrains.
(andhi3): Don't underestimate length.
(andsi3): Don't underestimate length. Improve code when upper
or lower half of destination is being cleared.
(indirect_jump_h8300, indirect_jump_h8300h): Simplify.
(shift insns): Remove useless "I" constraint.
Jeff Law [Wed, 1 May 1996 05:49:58 +0000 (23:49 -0600)]
h8300.md (bcs type): Remove "bcs" type attribute and all references.
* h8300/h8300.md (bcs type): Remove "bcs" type attribute and
all references.
(bcs insns): Delete. No longer needed.
(setcc from bitfield): Rewrite to use zero_extract. Provide
QImode, HImode and SImode variants.
Jeff Law [Mon, 29 Apr 1996 05:27:26 +0000 (23:27 -0600)]
h8300.c (names_small): Remove "BAD" postfix from %r7 byte registers.
* h8300/h8300.c (names_small): Remove "BAD" postfix from
%r7 byte registers.
(rtx_equal_function_value_matters): Remove extra declaration.
(output_simode_bld): New function.
* h8300/h8300.h (NO_FUNCTION_CSE): Do define this. Register
pressure makes cse-int function addresses rarely a win.
(reg_class): Remove unnecessary register classes LONG_REGS,
SP_REG, SP_AND_G_REGS.
(REG_CLASS_NAMES): Corresponding changes.
(REG_CLASS_CONTENTS): Corresponding changes.
(REGNO_REG_CLASS): Corresponding changes.
(REG_CLASS_FROM_LETTER): Corresponding chagnes.
(output_simode_bld): Declare.
* h8300/h8300.md: Nuke comments for stuff which has been fixed.
(all patterns): Remove references to register class "a" (SP_REGS)
which no longer exists.
(many patterns): Accept auto-inc auto-dec addresses in more cases.
(zero_extendqisi2): New pattern for the H8/300.
(zero_extendhisi2): Only use zero_extendhisi2_h8300 when not optimizing.
(extendhisi2): Only use extendhisi2_h8300 when not optimizing.
(extendqisi2): New pattern for the H8/300.
(bitfield related patterns): Completely rewrite.
(fancy_bclr, fancy_btst): Deleted. Redundant with new bitfield
patterns.
(addhi3 pattern for h8300): Handle case where we can't make matching
constraints (works around hard to fix reload problem).
(stack_pointer_manip): Delete.
(and not patterns): New combiner patterns.