Richard Stallman [Sun, 13 Sep 1992 17:36:33 +0000 (17:36 +0000)]
(exp): Detect signed integer overflow.
Replace `(unsigned)' with `(unsigned long)'. When
evaluating << and >>, compute the correct answer without shifting
by more than HOST_BITS_PER_LONG, or by a negative quantity.
(integer_overflow, left_shift, right_shift): New functions.
(compute_xdepi_operands_from_integer): New function.
Some code come from output_zdepi.
(output_zdepi): Removed. (depi_cint_operand): New name for zdepi_operand.
(consec_zeros_p, and_operand, ior_mask_p, ior_operand,
output_and, output_ior): New functions.
(output_load_address): Removed. Nothing uses it.
(several patterns): Make sure # of attribute alternatives match # of constraint alternatives.
(several patterns): Make sure # of attribute alternatives
match # of constraint alternatives.
Return assembler output template instead of calling output_asm_insn.
Don't write to operands[n] for n >= max operand number in the
pattern, use xoperands instead.
(casesi): Rewrite. Used to be buggy and slow.
(and-not patterns): Make them canonical. Put operands in the right order.
(negsi2): Don't use @ for just one output template.
(movstrsi): Change `!= 4' => `< 4' in test for alignment.
(adddi3): Extend to handle CONST_INT.
(ior-with-immediate optimizer): New pattern.
(and-with-immediate optimizer): New pattern.
(sCC, bCC expanders): Remove constraints.
(high:DI recognizer): Add return \"\".
Jeff Law [Fri, 11 Sep 1992 16:39:13 +0000 (10:39 -0600)]
pa.md (non-[cf]branch define_delay): Use a single delay description for the delay slots in "branch"...
* pa.md (non-[cf]branch define_delay): Use a single delay description
for the delay slots in "branch", "call", and "milli" insns.
(fbranch define_delay): fbranches have a single delay slot which
may be nullified when the branch is taken (regardless of direction
or distance to the target.)
(in_branch_delay attribute): Disallow fbranch insns explicitly.
(floating point branches): Use "fbranch" attribute for these insns.
Update output template to properly handle nullification.
(init_expr_once): Don't try HARD_REGNO_MODE_OK on VOIDmode or BLKmode.
(emit_move_insn): When moving word by word,
mark the whole thing as a libcall block.
(group_insns): New function.
(expand_expr): Implement COMPLEX_EXPR, REALPART_EXPR, IMAGPART_EXPR, CONJ_EXPR.
Jeff Law [Mon, 7 Sep 1992 00:42:04 +0000 (18:42 -0600)]
pa.c (output_function_prologue): Undo Aug.
* pa.c (output_function_prologue): Undo Aug. 13 change.
If profiling, then this function makes calls. Reflect this in
CALLINFO.
(output_function_epilogue): If profiling, then be restore "rp" here.
Use gen_lowpart to change mode of operand 0.
(storeinthi): Use match_operand for operand 0.
Change output code to reassign operand 0.
(truncsihi2, truncsiqi2, trunchiqi2): Remove these patterns.
(left_shift_overflows, same_sign, overflow_sum_sign): New macros.
(add_double, div_and_round_double, lshift_double, mul_double):
(neg_double, const_binop, fold): Check for signed integer overflow.
Propagate overflow flags from operands to result.
(const_binop, fold_convert): Use pedwarn for overflow warnings.
Say `constant expression', not `constant folding', for user's sake.
(install): Add semicolon to make an empty command.
(SYSTEM_HEADER_DIR): New variable.
(xlimits.h): New target, broken out from install-limits-h.
Look in SYSTEM_HEADER_DIR for system's limits.h.
(start.encap): Dep on xlimits.h.
(install-limits-h): Install xlimits.h already made.
If we find a link pointing to ., make a similar link to ., not a link to an absolute name.
If we find a link pointing to ., make a similar
link to ., not a link to an absolute name.
(stdio.h): Change stdio.h to use stdarg.h to get va_list.
When link points to a dir $dirname outside $INPUT,
copy that dir into $LIB/root$dirname. Translate the link itself
into a link to that new dir. Make a file DONE in each treetop dir
so no treetop is scanned twice. Improve progress messages.
(default_compilers): Add missing comma between strings, so that traditional compilers can compile gcc.c.
(default_compilers): Add missing comma between strings, so
that traditional compilers can compile gcc.c.
(main): Don't pass strcpy or strlen a NULL pointer if some of the
spec strings in default_compilers are NULL.
(validate_all_switches): Don't dereference a NULL pointer if some of
the spec strings in defalut_compilers are NULL.
Jeff Law [Wed, 2 Sep 1992 23:08:44 +0000 (17:08 -0600)]
caller-save.c (init_caller_save): If we were unable to find a simple insn which meets all its constraints to save...
* caller-save.c (init_caller_save): If we were unable to
find a simple insn which meets all its constraints to save
and restore with a single insn in a mode, then set
regno_save_mode to VOIDmode to insure that this mode is never
used to caller-save the current register.
Richard Kenner [Wed, 2 Sep 1992 10:37:38 +0000 (06:37 -0400)]
(make_compound_operation...
(make_compound_operation, case ASHIFTRT): Add new code to
handle (ashiftrt (neg (ashift FOO C1) C2)) just like we currently
handle (ashiftrt (OP (ashiftrt FOO C1) C2) C2).