Jeff Law [Wed, 14 Jul 1993 16:23:19 +0000 (10:23 -0600)]
pa.md (uncond_branch): New type attribute.
* pa.md (uncond_branch): New type attribute. Explicitly disallow
uncond_branch in most delay slots.
(in_call_delay attribute): New test for delay slot of call insns.
Allow uncond_branches in the delay slot if TARGET_JUMP_IN_DELAY.
(define_delay for calls, millicode calls, branches, returns, etc):
Broken up into two define delays. One for calls and millicode
calls, a second for branches, returns, etc.
(millicode insns): Pass the current insn down to
output_{mul,div,mod}_insn.
(jump insn): Use "uncond_branch" type attribute. Length of this
insn varies if it is in the delay slot of a call.
(call_internal_symref): Use output_call.
(call_value_internal_symref): Likewise.
(call_internal_reg): Use %r syntax instead of just register numbers.
(call_value_internal_reg): Likewise.
Jeff Law [Wed, 14 Jul 1993 16:22:49 +0000 (10:22 -0600)]
pa.c (output_call): New function to output a function call or millicode call...
* pa.c (output_call): New function to output a function call or
millicode call, possibly with a jump in the delay slot.
(output_mul_insn): Accept additional argument, use output_call.
(output_div_insn): Likewise.
(output_mod_insn): Likewise.
(jump_in_call_delay): New function to determine if the given
JUMP_INSN is in the delay slot of a call or millicode call.
Jeff Law [Wed, 14 Jul 1993 16:22:23 +0000 (10:22 -0600)]
pa.h (TARGET_JUMP_IN_DELAY): New target flag to allow/disallow jump instructions in call delay slots.
* pa.h (TARGET_JUMP_IN_DELAY): New target flag to allow/disallow
jump instructions in call delay slots.
(TARGET_SWITCHES): Add -mjump-in-delay and -mno-jump-in-delay.
Provide -mno alternatives for most options.
(output_call): Declare.
Richard Stallman [Sun, 11 Jul 1993 22:52:46 +0000 (22:52 +0000)]
(output_move_double): Fix typos in Jun 28 change.
Only set highest_first if first reg
of dest overlaps memory src address. Otherwise, if addreg1 set and
is same as second reg of dest, suppress trailing decrement.
Richard Stallman [Sun, 11 Jul 1993 22:44:54 +0000 (22:44 +0000)]
(convert_arguments): Don't warn about sign change for an INTEGER_CST inside NOP_EXPR, if value not fits new type.
(convert_arguments): Don't warn about sign change
for an INTEGER_CST inside NOP_EXPR, if value not fits new type.
Delete the code to check for VAL having enumeration type.
Richard Stallman [Sat, 10 Jul 1993 19:26:27 +0000 (19:26 +0000)]
(HARD_REG_ELT_TYPE): New unsigned type to avoid signed arithmetic overflow.
(HARD_REG_ELT_TYPE): New unsigned type to
avoid signed arithmetic overflow.
(HARD_REG_SET): Define as HARD_REG_ELT_TYPE, or array thereof.
(HARD_CONST): Always cast to HARD_REG_ELT_TYPE.
(*_HARD_REG_*): Use unsigned HARD_CONST and HARD_REG_ELT_TYPE
types instead of assuming HOST_WIDE_INT.
Jeff Law [Fri, 9 Jul 1993 20:22:50 +0000 (14:22 -0600)]
pa.c (pa_adjust_insn_length): dbra and movb insns which have their output in a FP register do not need adjustment.
* pa.c (pa_adjust_insn_length): dbra and movb insns which have
their output in a FP register do not need adjustment.
(output_cbranch, output_bb): Handle conditional jump to the
following instruction.
(output_dbra): New function extracted from dbra pattern.
(output_movb): New function.
(eq_neq_comparison_operator): New function.
(movb_comparison_operator): New function.
Jeff Law [Wed, 7 Jul 1993 20:40:06 +0000 (14:40 -0600)]
pa.c (pa_adjust_insn_length): Rewrite so that it only adjusts insns which really need adjustment.
* pa.c (pa_adjust_insn_length): Rewrite so that it only adjusts
insns which really need adjustment.
(output_cbranch): Rework so that output templates are simpler.
Use shorter sequence for long backwards conditional branches with
a filled delay slot that is nullified. More agressively use "skip"
instructions. More agressively nullify the delay slot if nothing
useful could be placed there.
(output_bb): Likewise.
(forward_branch_p): New function.
Jeff Law [Wed, 7 Jul 1993 20:38:50 +0000 (14:38 -0600)]
pa.md (conditional branches): Use the full displacement range for the branch target.
* pa.md (conditional branches): Use the full displacement range
for the branch target. Update length computations to match current
reality.
(branch on bit patterns): Likewise.
(decrement_and_branch_until_zero): Re-enable pattern. Rewrite to
be simpler and more efficient. Also handle case where loop counter
is in a FP register.
Richard Kenner [Mon, 5 Jul 1993 21:48:04 +0000 (17:48 -0400)]
(CPP_PREDEFINES): Define _AIX32.
(ASM_DECLARE_FUNCTION_NAME, TEXT_SECTION_ASM_OP): Use ".text[PR]" as csect
name.
(RS6000_CROR_BIT_NUMBER): New macro.
(PRINT_OPERAND_PUNCT_VALID_P): Allow `.' as valid.
Jeff Law [Sat, 3 Jul 1993 22:55:32 +0000 (16:55 -0600)]
pa.md (call expanders): Emit different patterns for named calls and indirect calls.
* pa.md (call expanders): Emit different patterns for named calls
and indirect calls.
(call_internal_symref, call_internal_reg): New patterns.
(call_internal): Deleted. Now handled by call_interal_{symref,reg}.
(call_value_internal_symref, call_value_internal_reg): New patterns.
(call_value_internal): Deleted. Now handled by
call_value_internal_{symref,reg).
Jim Wilson [Fri, 2 Jul 1993 20:36:28 +0000 (13:36 -0700)]
(zero_extendhisi2, extendhisi2, extendqihi2,
extendqisi2): Preserve the SUBREG_WORD value of subreg operands.
(ashldi3): Delete, obsoleted by lshldi3 pattern.
(lshldi3): Rename to ashldi3 for consistency with SImode shifts.
Paul Eggert [Fri, 2 Jul 1993 01:26:01 +0000 (01:26 +0000)]
(constant_expression_warning, overflow_warning,
convert_and_check): Distinguish between TREE_OVERFLOW, which is just
for warnings, and TREE_CONSTANT_OVERFLOW, which is for required
pedantic diagnostics.
Paul Eggert [Fri, 2 Jul 1993 01:26:01 +0000 (01:26 +0000)]
(c_sizeof, build_c_cast): Set TREE_OVERFLOW in addition to TREE_CONSTANT_OVERFLOW.
(c_sizeof, build_c_cast): Set TREE_OVERFLOW in addition
to TREE_CONSTANT_OVERFLOW.
(store_init_value): STRIP_TYPE_NOPS is required before
constant_expression_warning.