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.
Jeff Law [Fri, 12 Apr 1996 22:21:28 +0000 (16:21 -0600)]
h8300.c (print_operand): Handle new 'R' case for accessing the 8-bit area.
* h8300/h8300.c (print_operand): Handle new 'R' case for accessing
the 8-bit area. Make code for 'Y' fall into code for 'R' when
operand is not a register. Update some comments.
(h8300_tiny_data_p): New function.
(h8300_valid_machine_decl_attribute): Handle "tiny_data" attribute.
* h8300/h8300.h (OK_FOR_U): Handle memory references into the
8-bit area.
(ENCODE_SECTION_INFO): Mark SYMBOL_REFs which refer to the 8-bit
area.
* h8300/h8300.md (many patterns): Use 'R' rather than 'X' for
operands that may be memory accesses into the 8-bit area.
(btst pattern): New pattern to set the cc0 (zbit) based on
data in the 8-bit area.
* h8300/h8300.md (one_cmplsi2): Fix length computation for h8300h.
Jeff Law [Thu, 11 Apr 1996 04:51:22 +0000 (22:51 -0600)]
h8300.c (dosize): On the h8300h, do 4 byte adjustments using adds and subs.
* h8300.c (dosize): On the h8300h, do 4 byte adjustments
using adds and subs.
* h8300.h (LONG_LONG_TYPE_SIZE): Always make this 32bits.
Reverses change from Apr 2, 1996.
sparc.c (sparc_override_options): 90c701 renamed to tsc701.
* sparc/sparc.c (sparc_override_options): 90c701 renamed to tsc701.
(eligible_for_epilogue_delay_slot): Don't allow anything if
-mbroken-saverestore.
(output_function_prologue): Only use trivial save's if
-mbroken-saverestore.
Richard Kenner [Wed, 10 Apr 1996 21:19:42 +0000 (17:19 -0400)]
(e64toe): Properly distinguish between NaN and infinity bit patterns for real-words-big-endian targets.
(e64toe): Properly distinguish between NaN and infinity bit patterns
for real-words-big-endian targets.
(endian): Add two explicit casts.
(e64toe): Support ARM extended precision fp format. Check negative
infinities properly for NaNs.
(toe64): Support ARM extended precision fp format.
Jeff Law [Fri, 5 Apr 1996 05:58:46 +0000 (22:58 -0700)]
h8300.c (h8300_valid_machine_decl_attribute): Use underscores, not dashes in attributes.
* h8300/h8300.c (h8300_valid_machine_decl_attribute): Use
underscores, not dashes in attributes.
(h8300_funcvec_function_p): Corresponding changes.
(h8300_interrupt_function_p): Likewise.
Jeff Law [Wed, 3 Apr 1996 16:31:01 +0000 (09:31 -0700)]
h8300.h (h8300_funcvec_function_p): Declaration moved here.
* h8300.h (h8300_funcvec_function_p): Declaration moved here.
* h8300.c (h8300_funcvec_function_p): Declaration removed
from here.
* h8300.md (tstqi): Tweak to work like other tstXX patterns.
(cmphi): Turn into a define_expand. Add two anonymous
matterns to match the output of the cmphi expander.
(cmpsi): Accept constants as the second input operand.
Jeff Law [Mon, 1 Apr 1996 18:48:52 +0000 (11:48 -0700)]
h8300.c (interrupt_handler): Renamed from pragma_interrupt.
* h8300.c (interrupt_handler): Renamed from pragma_interrupt.
All references changed.
(function_prologue): Set interrupt_handler if the current
function has the "interrrupt-handler" attribute.
(small_call_insn_operand): New function.
(h8300_interrrupt_function_p): New function.
(h8300_funcvec_function_p): New function.
(h8300_valid_machine_decl_attribute): New function.
* h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Define.
* h8300.md (call insns): Handle calls through the
function vector. Indirect calls and calls through
the function vector have a length of two bytes.
* calls.c (expand_call): Remove current_call_is_indirect nonsense.
Add additional argument to INIT_CUMULATIVE_ARGS.
(emit_library_call): Likewise.
(emit_library_call_value): Likewise.
* expr.c (expand_builtin): Likewise.
* function.c (assign_parms): Likewise.
* config/pa/pa.h (hppa_args): New field "indirect".
(INIT_CUMULATIVE_ARGS): Initialize "indirect" field.
(FUNCTION_ARG): Check "indirect" field, rather than
"current_call_is_indirect".
* All other backends updated with new argument to
INIT_CUMULATIVE_ARGS
* pa.c (hppa_legitimize_address): Don't lose for
(plus (plus (mult (A) (shadd_const)) (B)) (C)) if
B + C isn't a valid address for indexing.
(basereg_operand): Only accept base registers after
cse has completed. Don't accept the frame pointer if
it's likely to be eliminated.
* pa.md (unscaled indexing patterns): Add variants with
basereg and index register reversed.
(HImode and QImode loads): Add zero extended variants.