Jeff Law [Sat, 30 Jan 1993 21:10:07 +0000 (14:10 -0700)]
pa.h (CONST_DOUBLE_OK_FOR_LETTER_P): Generalize.
* pa.h (CONST_DOUBLE_OK_FOR_LETTER_P): Generalize.
(LEGITIMATE_CONSTANT_P): Allow 0.0.
(CONST_COSTS, case CONST_DOUBLE): fp0.0 is free when
not used in a SET expression.
Jeff Law [Sat, 30 Jan 1993 21:09:51 +0000 (14:09 -0700)]
pa.c (reg_or_0_operand): Use CONST0_RTX instead of const0_rtx.
* pa.c (reg_or_0_operand): Use CONST0_RTX instead of
const0_rtx.
(reg_or_0_or_nonsymb_mem_operand): New function.
(emit_move_sequence): Copying CONST0_RTX into any
register can be done directly. Use CONST0_RTX instead
of const0_rtx.
(output_fp_move_double): Handle copying a CONST0_RTX
into FP or integer registers.
(print_operand): Handle "%r0" for DFmode and SFmode
values too.
Niklas Hallqvist [Sat, 30 Jan 1993 06:06:09 +0000 (06:06 +0000)]
c-common.c (c_build_type_variant): Moved here from c-decl.c.
* c-common.c (c_build_type_variant): Moved here from c-decl.c.
Redirected the TYPE_MAIN_VARIANT to the "real" main variant.
Build the possibly new array type on the permanent obstack if it
the original type was permanent.
(permanent_obstack): Added extern declaration.
Jeff Law [Fri, 29 Jan 1993 17:09:30 +0000 (10:09 -0700)]
reload.c (find_reloads_toplev): When handling a (subreg (reg)) where (reg) will be replaced by a memory...
* reload.c (find_reloads_toplev): When handling a (subreg (reg))
where (reg) will be replaced by a memory reference, if the memory
address is invalid for the mode of the subreg, then search the
memory address for reloads.
Jeff Law [Thu, 28 Jan 1993 18:59:42 +0000 (11:59 -0700)]
pa.md (iorsi3): Split into two patterns...
* pa.md (iorsi3): Split into two patterns, a named "iorsi3" which
only accepts registers, and a combiner pattern which accepts a
restricted set of constant integers for one term.
Richard Kenner [Thu, 28 Jan 1993 12:30:12 +0000 (07:30 -0500)]
Remove 29050-specific variants of patterns generating loadm that have earlyclobber.
Remove 29050-specific variants of patterns generating loadm that have
earlyclobber. This was put in for some very old version of the '050,
which isn't used anymore, that had a bug.
Brendan Kehoe [Tue, 26 Jan 1993 18:45:24 +0000 (13:45 -0500)]
Makefile.in (insn-*.[ch], [...]): When using a trailing semicolon to force a rule to not do anything...
* Makefile.in (insn-*.[ch], protoize.o, unprotoize.o, install): When
using a trailing semicolon to force a rule to not do anything,
explicitly run the command `true', to avoid warnings or other
problems with versions of make which don't like null commands.
Jim Wilson [Mon, 25 Jan 1993 20:24:37 +0000 (12:24 -0800)]
(CPP_SPEC): Delete __sparc_frw__ define.
(TARGET_FRW_COMPAT): New macro.
(TARGET_DEFAULTS): Comment out -mfrw option. Add new commented
out option -mfrw-compat.
(EXPAND_BUILTIN_SAVEREGS): Call sparc_builtin_saveregs to emit rtl
inline instead of calling builtin_saveregs in libgcc.a.
Jim Wilson [Mon, 25 Jan 1993 19:52:15 +0000 (11:52 -0800)]
(calls_alloca): Change name to calls_function.
(calls_alloca): Change name to calls_function. Add new
parameter WHICH to control old or new behaviour.
(expand_call): When stack space is preallocated and parameters
must be passed on the stack, precompute parameters that involve
function calls.
Richard Kenner [Sat, 23 Jan 1993 22:13:03 +0000 (17:13 -0500)]
(reload): After calling count_possible_groups, see if we have to proceed with allocating a group.
(reload): After calling count_possible_groups, see if we have to proceed
with allocating a group.
(count_possible_groups): Use HARD_REG_SET, not a char array, for consistency.
Jeff Law [Thu, 21 Jan 1993 16:34:04 +0000 (09:34 -0700)]
pa.h (REG_CLASSES): Delete GENERAL_OR_FP_OR_SNAKE_FP register class, it's not needed anymore.
* pa.h (REG_CLASSES): Delete GENERAL_OR_FP_OR_SNAKE_FP register
class, it's not needed anymore. Delete all references. 'Z'
register class is now "ALL_REGS".
Don't allow both operands to be MEM.
(float addM3,subM3,divM3,mulM3 recognizers): Don't allow either operand
to be a constant.
(all float patterns, FLOAT_EXTEND operands): Don't allow GENERAL_REGS
for float_extended operand.
(all float patterns, FLOAT operands): Change constraints to get better
register classification.
(fix_truncMN2 patterns): Likewise.
(floatMN2 patterns): Likewise.
(all functions): Use NULL_RTX instead of 0 for rtx comparisons.
(emit_pop_insn): Emit insn with mode QImode: insn contains stack-regs.
(emit_hard_swap_insn): Delete.
(emit_swap_insn): Merge with emit_hard_swap_insn.
Delete WHEN arg and change all callers.
If previous insn was a push from REG, omit swap.
If previous insn wrote reg-stack top to REG, omit swap.
Emit swap insn with mode QImode: insn contains stack-regs.
Emit swap insn after previous float insn, instead of before this one.
(swap_rtx_condition): New function.
(compare_for_stack_reg): If op 0 of COMPARE is not a stack reg, exchange
ops 0 and 1 and swap cc0 user condition.