Jeff Law [Thu, 18 Apr 1996 19:21:44 +0000 (13:21 -0600)]
h8300.md: Remove "type" attribute from all patterns except those which have varying...
* h8300/h8300.md: Remove "type" attribute from all patterns
except those which have varying length branches. Eliminate
obsolete "type" attributes. Add additional comments about insn
length computation problems and further optimizations. Add
"length" and "cc" attributes to insns without them, fix a few
length computations. Remove patterns which are commented out.
* h8300/h8300.md (zero extension expanders and insns): Simplify,
fix various length problems, provide optimized versions for the
h8300 and h8300h.
(sign extension expanders and insns): Likewise. Make them
nearly identical to zero_extension patterns and insns.
(handle_cp_pragma): New function, with decl, doing the cc1plus pragmas.
(handle_cp_pragma): New function, with decl, doing the cc1plus
pragmas.
(check_newline): Put the vtable/unit/implementation/interface pragma
code into handle_cp_pragma, replacing it with a call.
(handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
args. Get the next token after handling the pragma token.
Jeff Law [Tue, 16 Apr 1996 22:08:32 +0000 (16:08 -0600)]
h8300.md (andhi3): If 2nd operand is a CONST_INT that meets the 'J' constraint...
* h8300/h8300.md (andhi3): If 2nd operand is a CONST_INT that
meets the 'J' constraint, then only two bytes are needed for
this insn. Improve code generated for the h8300h when both
operands are registers.
(iorhi3, xorhi3): Likewise. Rework to be nearly identical to andhi3.
(andsi3): If 2nd operand is a CONST_INT that meets the 'J'
constraint, then only two bytes are need for this insn.
Improve code generated for the h8300h regardless of the
type of the 2nd operand. Make this pattern work on the h8300 too.
(iorsi3, xorsi3): Likewise. Rework to be nearly identical to andsi3.
(iorqi3_internal): Make this pattern look more like andqi3_internal.
(one_cmplhi2, one_cmplsi2): Fix length computation for H8300H.
Richard Kenner [Tue, 16 Apr 1996 20:57:31 +0000 (16:57 -0400)]
Greatly simplify the run-time trampoline code:
(TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): Delete define.
(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Changed.
(TRAMPOLINE_ALIGN): No point aligning to cache line.
(FINISH_INIT_TRAMPOLINE): New define.
Jim Wilson [Mon, 15 Apr 1996 19:10:36 +0000 (12:10 -0700)]
(emit_reload_insns): Call reload_reg_reaches_end_p for every reg of multi-reg spill register.
(emit_reload_insns): Call reload_reg_reaches_end_p for
every reg of multi-reg spill register. Invalidate old info for multi
reg spill registers when only part survives to the end.
* gcc.c: #include "gansidecl.h".
(PROTO,VPROTO,PVPROTO,VPROTO,VA_START,NULL): Delete.
(GENERIC_PTR,NULL_PTR,P_tmpdir): Delete.
(choose_temp_base): Declare as extern, delete internal copy.
(concat): Rewrite to take a variable number of arguments.
(choose_temp_base_try,concat[346]): Delete.
(translate_options,set_spec,process_command,do_spec_1,
is_directory,main): Always use concat, not concat[346]. Pass
NULL_PTR as trailing arg to concat.
Jeff Law [Mon, 15 Apr 1996 07:46:10 +0000 (01:46 -0600)]
flags.h (flag_function_sections): Declare.
* flags.h (flag_function_sections): Declare.
* toplev.c (flag_function_sections): Define.
(compile_file): Add warnings when -ffunction-sections is
used with -g, or profiling. Disable -ffunction-sections
when profiling is used. Add warning when -ffunction-sections
is used on a target that doesn't support it.
* varasm.c (named_section): Make a copy of the section name
in case the original is in temporary storage.
(function_section): Set DECL_SECTION_NAME for each function
if flag_function_sections is on and the target supports it.
* dbxout.c (dbxout_function_end): New function.
(dbxout_function): Call dbxout_function_end if using extensions
and flag_function_sections is on.
* sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Prefix a function
section's name with ".text%" when -ffunction-sections.
Richard Kenner [Sun, 14 Apr 1996 12:20:54 +0000 (08:20 -0400)]
(combine_instructions): In initial scan of insns, handle a REG_INC note's affect on sign bit copies and nonzero bits.
(combine_instructions): In initial scan of insns, handle a REG_INC
note's affect on sign bit copies and nonzero bits.
(set_nonzero_bits_and_sign_copies): Treat a zero SET arg as a CLOBBER.
arm.c (use_return_insn): Don't use return for naked functions.
* arm/arm.c (use_return_insn): Don't use return for naked functions.
(arm_valid_machine_decl_attribute): New function.
(arm_naked_function_p): New function.
(output_func_prologue): Naked functions don't have prologues.
(arm_expand_prologue): Likewise.
(output_func_epilogue): Likewise with epilogues.
Jeff Law [Sat, 13 Apr 1996 15:35:46 +0000 (09:35 -0600)]
h8300.c (adds_subs_operand): Fix thinko in last change.
* h8300/h8300.c (adds_subs_operand): Fix thinko in last change.
* h8300/h8300.md (subhi3): Turn into a define_expand.
(subhi3 using adds_subs): New pattern.
(H8300 subhi): Derived from old subhi pattern. Simplified.
(H8300H subhi): Likewise.
(subsi using adds_subs): New pattern. Only used on H8300H.
(subsi_h8300): Allow "a" registers as destination.
(subsi_h8300h): Allow "a" registers as destination. Simplify.
* h8300/h8300.md (bcs_qiqi, bcs_hihi, bs_hiqi): Fix thinkos
in last change.
Jeff Law [Sat, 13 Apr 1996 06:37:29 +0000 (00:37 -0600)]
h8300.md: Add more comments about things which seem wrong...
* h8300.md: Add more comments about things which seem
wrong, stupid, or just don't make any sense yet.
* h8300.c (adds_subs_operand): New function.
(output_adds_subs): New function.
* h8300.md (addhi3): Turn into a define_expand.
(addhi3 using adds_subs): New pattern.
(H8300 addhi): Derived from old addhi pattern. Simplified.
(H8300H addhi): Likewise.
(addsi using adds_subs): New pattern. Only used on H8300H.
(addsi_h8300): Allow "a" registers as destination.
(addsi_h8300h): Simplify. Allow "a" registers as destination.
* h8300.md (bcs): New attribute type.
(default_length): Compute correct length for bcs insns.
(bcs_qiqi, bcs_hihi, bs_hiqi): Use new type and update
to account for correct length computation.
* h8300.md (movhi_internal): Demand at least one operand to
be a register.
(movsi_h8300): Optimize loading certain constants.
(movsi_h8300h): Likewise.
* h8300.h (NO_FUNCTION_CSE): Comment out.
(FUNCTION_ARG_REGNO_P): Properly define for TARGET_QUICKCALL.
(RETURN_IN_MEMORY): Don't return small structs in regs.
Per Bothner [Sat, 13 Apr 1996 00:06:54 +0000 (17:06 -0700)]
config.guess: Combine two OSF1 rules.
* config.guess: Combine two OSF1 rules.
Also recognize field test versions. From mjr@zk3.dec.com.
* config.guess (dgux): Use /usr/bin/uname rather than uname,
because GNU uname does not support -p. From pmr@pajato.com.