Richard Kenner [Thu, 11 Feb 1993 19:41:46 +0000 (14:41 -0500)]
(find_a_file): Always reject "./ld".
(main): Pass short name of program as first arg to fork_execute; ensure
argv[0] always gets filename.
(fork_execute): Print name for diagnostic from PROG; filename comes from
argv[0].
Richard Kenner [Thu, 11 Feb 1993 10:55:22 +0000 (05:55 -0500)]
(putenv): New function, copied from gcc.c.
(last_file_name): New variable.
(find_a_file): Ignore name in last_file_name too.
(main): Look at name in COLLECT_NAME and set it to the name we were called
with.
Pass filename used for ld to ld as argv[0].
Richard Kenner [Wed, 10 Feb 1993 21:13:53 +0000 (16:13 -0500)]
(version_string): Declare.
(current_file_function_operand): New function, replaces
current_function_operand.
(print_operand, case 'F'): Case deleted.
(alpha_builtin_saveregs): Reworked to use homed arglists, as recommended in
the calling standard.
(alpha_need_gp): Deleted, code moved into output_prolog.
(alpha_gp_dead_after): Deleted; optimization is not safe.
(alpha_write_verstamp): New function.
(output_prolog, output_epilog): Major rework to update to current
calling standard.
Richard Kenner [Wed, 10 Feb 1993 21:12:20 +0000 (16:12 -0500)]
(ASM_OUTPUT_LOOP_ALIGN): Enable, now that assembler fixed.
(SLOW_UNALIGNED_ACCESS): Define as 1.
(ARG_POINTER_REGNUM): Use register number 31 as an arg pointer.
(FRAME_GROWS_DOWNWARD): Do not define.
(STARTING_FRAME_OFFSET): Now is outgoing args size.
(FIRST_PARM_OFFSET): Now 0.
(ELIMINABLE_REGS, etc.): Cannot eliminate gp, but do eliminate AP in favor
of either SP or FP.
(RETURN_IN_MEMORY): All structs or integers larger than 64 bits get returned
via memory.
(SETUP_INCOMING_VARARGS): Use homed arglist mechanism.
(ASM_DECLARE_FUNCTION_NAME): Use proper second arg to .ent.
(ASM_FILE_START): Call alpha_write_verstamp.
(ENCODE_SECTION_INFO): Record when a decl is for a function in the current
file.
Richard Kenner [Mon, 8 Feb 1993 10:51:58 +0000 (05:51 -0500)]
Allow passing nonaligned BLKmode structs in regs.
(struct arg_data): New fields aligned_regs and n_aligned_regs.
(expand_call): Set and use these fields when required.
(store_one_arg): Don't pass reg to emit_push_insn if we have previously
formed aligned registers.
(movqi): For special case of moving byte to stack, push into low byte and then copy to high byte.
(movqi): For special case of moving byte
to stack, push into low byte and then copy to high byte.
For case of moving to/from address reg, exchange it with d0.
(parser_build_binary_op): Warn about overflows and conversions of out-of-range...
(parser_build_binary_op): Warn about overflows and
conversions of out-of-range constants in parser-built binary expressions.
(build_conditional_expr): Check conversions in if-then-else expressions.
(build_c_cast): Ignore any integer overflow caused by a cast.
(convert_for_assignment): Warn if source had overflow in folding.
(process_init_constructor): Report overflows in array initializer indexes.
(lshift_double): Don't report arithmetic overflow, since the
C standard doesn't seem to require it here.
(force_fit_type): Accept new parameter specifying whether a signed
overflow has already occurred. Yield overflow indication.
All callers changed.
(neg_double): Don't report overflow when -0 yields 0.
(const_binop): Propagate operand overflow for warnings.
Don't report overflow when -1 + 1 yields 0.
Jeff Law [Sat, 30 Jan 1993 21:10:29 +0000 (14:10 -0700)]
of the comparison.
(cmpXf insns): Allow 0.0 for either operand of the
comparison. Update output template to handle 0.0 as one
of the operands.
(movsi insn, fp->fp case): Update constraints and template to
allow store of zero into an FP register.
(movhi insn, fp->fp case): Likewise.
(movqi insn, fp->fp case): Likewise.
(movdi insn, fp->fp case): Likewise.
(movDF const_double pattern): Do not apply this pattern
if the const_double is zero.
(movdf insn, fp->fp and gr->gr cases): Update constraints
and output template to allow store of zero into a FP or GR.
Update condition string to allow zero as operand 1.
(movsf insn, fp->fp and gr->gr cases): Likewise. Also allow
store of zero into a memory location.
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.