OSDN Git Service

Lotsa sparc stuff.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 34a1d58..f68a31f 100644 (file)
@@ -1,3 +1,333 @@
+Mon Oct 20 14:16:38 1997  Geoffrey KEATING  <geoffk@ozemail.com.au>
+
+       * rs6000/t-ppccomm: Use -msdata=none for crtstuff.
+
+Mon Oct 20 12:28:17 1997  Doug Evans  <devans@canuck.cygnus.com>
+
+       * sparc/sparc.h (SPARC_V9,SPARC_ARCH64): Delete.
+       (DEFAULT_ARCH32_P): New macro.
+       (TARGET_ARCH{32,64}): Allow compile time or runtime selection.
+       (enum cmodel): Declare.
+       (sparc_cmodel_string,sparc_cmodel): Declare.
+       (SPARC_DEFAULT_CMODEL): Provide default.
+       (TARGET_{MEDLOW,MEDANY}): Renamed to TARGET_CM_{MEDLOW,MEDANY}.
+       (TARGET_FULLANY): Deleted.
+       (TARGET_CM_MEDMID): New macro.
+       (CPP_CPU_DEFAULT_SPEC): Renamed from CPP_DEFAULT_SPEC.
+       (ASM_CPU_DEFAULT_SPEC): Renamed from ASM_DEFAULT_SPEC.
+       (CPP_PREDEFINES): Take out stuff now handled by %(cpp_arch).
+       (CPP_SPEC): Rewrite.
+       (CPP_ARCH{,32,64,_DEFAULT}_SPEC): New macros.
+       (CPP_{ENDIAN,SUBTARGET}_SPEC): New macros.
+       (ASM_ARCH{,32,64,_DEFAULT}_SPEC): New macros.
+       (ASM_SPEC): Add %(asm_arch).
+       (EXTRA_SPECS): Rename cpp_default to cpp_cpu_default.
+       Rename asm_default to asm_cpu_default.
+       Add cpp_arch32, cpp_arch64, cpp_arch_default, cpp_arch, cpp_endian,
+       cpp_subtarget, asm_arch32, asm_arch64, asm_arch_default, asm_arch.
+       (NO_BUILTIN_{PTRDIFF,SIZE}_TYPE): Define ifdef SPARC_BI_ARCH.
+       ({PTRDIFF,SIZE}_TYPE): Provide 32 and 64 bit values.
+       (MASK_INT64,MASK_LONG64): Delete.
+       (MASK_ARCH64): Renamed to MASK_64BIT.
+       (MASK_{MEDLOW,MEDANY,FULLANY,CODE_MODEL}): Delete.
+       (EMBMEDANY_BASE_REG): Renamed from MEDANY_BASE_REG.
+       (TARGET_SWITCHES): Always provide 64 bit options.
+       (ARCH64_SWITCHES): Delete.
+       (TARGET_OPTIONS): New option -mcmodel=.
+       (INT_TYPE_SIZE): Always 32.
+       (MAX_LONG_TYPE_SIZE): Define ifdef SPARC_BI_ARCH.
+       (INIT_EXPANDERS): sparc64_init_expanders renamed to sparc_init_....
+       (FUNCTION_{,BLOCK_}PROFILER): Delete TARGET_EMBMEDANY support.
+       (PRINT_OPERAND_PUNCT_VALID_P): Add '_'.
+       * sparc/linux-aout.h (CPP_PREDEFINES): Take out stuff handled by
+       CPP_SPEC.
+       (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC.
+       * sparc/linux.h: Likewise.
+       * sparc/linux64.h (SPARC_V9,SPARC_ARCH64): Delete.
+       (ASM_CPU_DEFAULT_SPEC): Renamed from ASM_DEFAULT_SPEC.
+       (TARGET_DEFAULT): Delete MASK_LONG64, MASK_MEDANY, add MASK_64BIT.
+       (SPARC_DEFAULT_CMODEL): Define.
+       (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC.
+       (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC.
+       (LONG_DOUBLE_TYPE_SIZE): Define.
+       (ASM_SPEC): Add %(asm_arch).
+       * sparc/sol2.h (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC.
+       (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC.
+       (TARGET_CPU_DEFAULT): Add ultrasparc case.
+       * sparc/sp64-aout.h (SPARC_V9,SPARC_ARCH64): Delete.
+       (TARGET_DEFAULT): MASK_ARCH64 renamed to MASK_64BIT.
+       (SPARC_DEFAULT_CMODEL): Define.
+       * sparc/sp64-elf.h (SPARC_V9,SPARC_ARCH64): Delete.
+       (TARGET_DEFAULT): MASK_ARCH64 renamed to MASK_64BIT.  Delete
+       MASK_LONG64, MASK_MEDANY.
+       (SPARC_DEFAULT_CMODEL): Define.
+       (CPP_PREDEFINES): Delete.
+       (CPP_SUBTARGET_SPEC): Renamed from CPP_SPEC.
+       (ASM_SPEC): Add %(asm_arch).
+       (LONG_DOUBLE_TYPE_SIZE): Define.
+       (DWARF2_DEBUGGING_INFO): Define.
+       * sparc/splet.h (CPP_SPEC): Delete.
+       * sparc/sysv4.h (CPP_PREDEFINES): Take out stuff handled by CPP_SPEC.
+       (FUNCTION_BLOCK_PROFILER): Delete TARGET_EMBMEDANY support.
+       (BLOCK_PROFILER): Likewise.
+       * sparc/sparc.c (sparc_cmodel_string,sparc_cmodel): New globals.
+       (sparc_override_options): Handle code model selection.
+       (sparc_init_expanders): Renamed from sparc64_init_expanders.
+       * sparc/sparc.md: TARGET_<code_model> renamed to TARGET_CM_....
+       TARGET_MEDANY renamed to TARGET_CM_EMBMEDANY.
+       (sethi_di_embmedany_{data,text}): Renamed from sethi_di_medany_....
+       (sethi_di_fullany): Delete.
+
+Mon Oct 20 02:00:18 1997  Klaus Kaempf <kkaempf@progis.de>
+                         Jeff Law <law@cygnus.com>
+                         Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+       * alpha/vms.h (DIVSI3_LIBCALL): OTS$ functions are upper case.
+       (DIVDI3_LIBCALL, UDIVSI3_LIBCALL, UDIVDI3_LIBVALL): Likewise.
+       (MODSI3_LIBCALL, MODDI3_LIBCALL): Likewise.
+       (UMODSI3_LIBCALL, UMODDI3_LIBCALL): Likewise.
+       * alpha/alpha.md (arg_home): Likewise.
+
+       * alpha/alpha.c (vmskrunch): Delete
+       * alpha/vms.h (ENCODE_SECTION_INFO, ASM_DECLARE_FUNCTION_NAME): Delete.
+       * alpha.c (output_prolog, VMS): Use alloca for entry_label and don't
+       truncate to 64 characters.
+
+       * make-l2.com: Support openVMS/Alpha.
+
+       * vmsconfig.com: Fix to work on openVMS/Alpha and openVMS/VAX.
+
+Sun Oct 19 19:00:35 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * longlong.h (count_leading_zeros): Add missing casts to USItype.
+
+Sun Oct 19 18:44:06 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * i386/bsd386.h (ASM_COMMENT_START): Define.
+
+Sat Oct 18 13:47:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tree.c (restore_tree_status): Also free up temporary storage
+       when we finish a toplevel function.
+       (dump_tree_statistics): Print stats for backend obstacks.
+
+Sat Oct 18 12:47:31 1997  Doug Evans  <dje@canuck.cygnus.com>
+
+       * expr.c (use_group_regs): Don't call use_reg for MEMs.
+
+Sat Oct 18 09:49:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * libgcc2.c (__throw): Don't copy the return address.
+       * dwarf2out.c (expand_builtin_dwarf_reg_size): Ignore return address.
+
+       * except.c (exceptions_via_longjmp): Initialize to 2 (uninitialized).
+       * toplev.c (main): Initialize exceptions_via_longjmp.
+
+       * tree.c: Add extra_inline_obstacks.
+       (save_tree_status): Use it.
+       (restore_tree_status): If this is a toplevel inline obstack and we
+       didn't want to save anything on it, recycle it.
+       (print_inline_obstack_statistics): New fn.
+       * function.c (pop_function_context_from): Pass context to 
+       restore_tree_status.
+       * obstack.h (obstack_empty_p): New macro.
+
+Sat Oct 18 00:43:59 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * i386/freebsd.h (ASM_COMMENT_START): Fix.
+
+Fri Oct 17 23:48:52 1997  Jim Wilson  (wilson@cygnus.com)
+
+       * v850.c (ep_memory_offset): New function.
+       (ep_memory_operand, substitute_ep_register, v850_reorg): Call it.
+
+       * v850.h (CONST_OK_FOR_*): Add and correct comments.
+       (CONSTANT_ADDRESS_P): Add comment.
+       (EXTRA_CONSTRAINT): Define 'U'.
+       * v850.md: Add comments on bit field instructions.
+       (addsi3): Delete &r/r/r alternative.  Add r/r/U alternative.
+       (lshrsi3): Use N not J constraint. 
+
+       * v850.md (v850_tst1+1): New define_split for tst1 instruction.
+
+       * v850.c (reg_or_0_operand): Call register_operand.
+       (reg_or_int5_operand): Likewise.
+       * v850.h (MASK_BIG_SWITCH, TARGET_BIG_SWITCH): New macros.
+       (TARGET_SWITCHES): Add "big-switch".
+       (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT, CASE_VECTOR_MODE,
+       ASM_OUTPUT_BEFORE_BASE_LABEL): Add support for TARGET_BIG_SWITCH.
+       (CASE_DROPS_THROUGH): Comment out.
+       (CASE_VECTOR_PC_RELATIVE, JUMP_TABLES_IN_TEXT_SECTION): Define.
+       * v850.md (cmpsi): Delete compare mode.
+       (casesi): New pattern.
+
+       * v850.h (CONST_OK_FOR_N): Delete redundant compare against zero.
+       * v850.md (ashlsi3): Use SImode not QImode for shift count.
+       (lshrsi3): Likewise.
+
+       * v850.c (print_operand): Add 'c', 'C', and 'z' support.  Delete
+       unreachable switch statement after 'b' support.  Remove "b" from
+       strings for 'b' support.
+       * v850.md (branch_normal, branch_invert): Change %b to b%b.
+
+Fri Oct 17 23:33:20 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * Makefile.in (LIBGCC2_CFLAGS): Avoid a backslash then an
+       empty line if @inhibit_libc@ is empty.
+
+Fri Oct 17 23:24:40 1997  Robert Lipe (robertl@dgii.com)
+
+       * i386/sco5.h: Let ELF use dwarf2 unwinding.  COFF uses sjlj.
+       (EH_FRAME_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP_ELF): Defined.
+       (EH_FRAME_SECTION_ASM_OP_COFF): Likewise.
+       (DWARF2_UNWIND_INFO): Let this track object file format.
+       (EXTRA_SECTIONS): Add in_eh.
+       (EH_FRAME_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP_ELF): Define.
+       (EH_FRAME_SECTION_ASM_OP_COFF): Likewise.
+
+Fri Oct 17 17:13:42 1997  David S. Miller  <davem@tanya.rutgers.edu>
+
+       * sparc/linux64.h (LINK_SPEC): Dynamic linker is ld-linux64.so.2.
+       * sparc/sparc.h (FUNCTION_PROFILER): Fix format string when
+       TARGET_MEDANY.
+       * sparc/sparc.c (dwarf2out_cfi_label): Extern no longer needed.
+       (output_double_int): Output DI mode values correctly when
+       HOST_BITS_PER_WIDE_INT is 64.
+       (output_fp_move_quad): If TARGET_V9 and not TARGET_HARD_QUAD, use
+       fmovd so it works if a quad float ends up in one of the upper 32
+       float regs.
+       * sparc/sparc.md (pic_{lo_sum,sethi}_di): New patterns
+       necessary for PIC support on sparc64.
+
+Fri Oct 17 13:39:56 1997  Doug Evans  <dje@canuck.cygnus.com>
+
+       * sparc/sp64-elf.h (TARGET_DEFAULT): Delete MASK_STACK_BIAS.
+       * sparc/sparc.h (PROMOTE_MODE): Promote small ints if arch64.
+       (PROMOTE_FUNCTION_ARGS,PROMOTE_FUNCTION_RETURN): Define.
+       (SPARC_FIRST_FP_REG, SPARC_FP_REG_P): New macros.
+       (SPARC_{OUTGOING,INCOMING}_INT_ARG_FIRST): New macros.
+       (SPARC_FP_ARG_FIRST): New macro.
+       (CONDITIONAL_REGISTER_USAGE): All v9 fp regs are volatile now.
+       (REG_ALLOC_ORDER,REG_LEAF_ALLOC_ORDER): Reorganize fp regs.
+       (NPARM_REGS): There are 32 fp argument registers now.
+       (FUNCTION_ARG_REGNO_P): Likewise.
+       (FIRST_PARM_OFFSET): Update to new v9 abi.
+       (REG_PARM_STACK_SPACE): Define for arch64.
+       (enum sparc_arg_class): Delete.
+       (sparc_arg_count,sparc_n_named_args): Delete.
+       (struct sparc_args): Redefine and use for arch32 as well as arch64.
+       (GET_SPARC_ARG_CLASS,ROUND_REG,ROUND_ADVANCE): Delete.
+       (FUNCTION_ARG_ADVANCE): Rewrite.
+       (FUNCTION_ARG,FUNCTION_INCOMING_ARG): Rewrite.
+       (FUNCTION_ARG_{PARTIAL_NREGS,PASS_BY_REFERENCE}): Rewrite.
+       (FUNCTION_ARG_CALLEE_COPIES): Delete.
+       (FUNCTION_ARG_{PADDING,BOUNDARY}): Define.
+       (STRICT_ARGUMENT_NAMING): Define.
+       (doublemove_string): Declare.
+       * sparc/sparc.c (sparc_arg_count,sparc_n_named_args): Delete.
+       (single_move_string): Use GEN_INT, and HOST_WIDE_INT.
+       (doublemove_string): New function.
+       (output_move_quad): Clean up some of the arch64 support.
+       (compute_frame_size): Add REG_PARM_STACK_SPACE if arch64.
+       Don't add 8 bytes of reserved space if arch64.
+       (sparc_builtin_saveregs): Combine arch32/arch64 versions.
+       (init_cumulative_args): New function.
+       (function_arg_slotno): New static function.
+       (function_arg,function_arg_partial_nregs): New functions.
+       (function_arg_{pass_by_reference,advance}): New functions.
+       (function_arg_padding): New function.
+       * ginclude/va-sparc.h: Rewrite v9 support.
+
+Fri Oct 17 12:29:48 1997  Christian Iseli  <Christian.Iseli@lslsun.epfl.ch>
+
+       * regclass.c (record_address_regs): Look at REG_OK_FOR_{BASE,INDEX}_P
+       for hard regs to determine base and index registers.
+
+       * reload.c (debug_reload_to_stream): New function.  Specify stream
+       into which to write debug info.
+       (debug_reload): Modify to call debug_reload_to_stream with stderr.
+
+Thu Oct 16 15:07:51 1997  Richard Henderson  <rth@cygnus.com>
+
+       * combine.c (can_combine_p): Don't combine with an asm whose
+       output is a hard register.
+
+Thu Oct 16 15:43:26 1997  Mike Stump  (mrs@wrs.com)
+
+       * c-decl.c (start_struct): Ensure that structs with forward
+       declarations are in fact packed when -fpack-struct is given.
+
+       * stor-layout.c (layout_record): Ignore STRUCTURE_SIZE_BOUNDARY if
+       we are packing a structure.  This allows a structure with only
+       bytes to be aligned on a byte boundary and have no padding on a
+       m68k.
+
+Thu Oct 16 15:17:54 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * rs6000.h (ROUND_TYPE_ALIGN): Don't blow up if no fields in record.
+
+Thu Oct 16 11:20:30 1997  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.c (alpha_return_addr_rtx): New variable.
+       (alpha_save_machine_status): New; save it.
+       (alpha_restore_machine_status): New; restore it.
+       (alpha_init_expanders): New; clear it.
+       (alpha_return_addr): New; set it.
+       (alpha_ra_ever_killed): New; if alpha_return_addr_rtx, regs_ever_live
+       is overly conservative, so search the insns explicitly.
+       (alpha_sa_mask [VMS]): Check alpha_ra_ever_killed.
+       (alpha_sa_size [VMS && !VMS]): Likewise.
+       * alpha.h (RETURN_ADDR_RTX): Call alpha_return_addr.
+       (INIT_EXPANDERS): New definition.
+       
+       * alpha.c: Move REG_PV, REG_RA somewhere more visible in the file.
+       (output_prolog [!VMS]): Use them.
+
+       * alpha.c (output_prolog [!VMS]): Move gp detection to ...
+       (alpha_does_function_need_gp): ... a new function.  Refine the 
+       CALL_INSN test to just TYPE_JSR.
+       * alpha.md (most call insns): Fix some jsr/ibr type transpositions.
+
+Thu Oct 16 09:36:47 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * version.c: Bump for snapshot.
+
+Wed Oct 15 21:38:18 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * pa.c (move_operand): Respect -mdisable-indexing.
+       * pa.h (GO_IF_LEGITIMATE_ADDRESS): Likewise.
+
+Wed Oct 15 21:34:45 1997  David Edelsohn  <edelsohn@mhpcc.edu>
+
+       * rs6000.md (udivsi3, divsi3): Split into MQ and non-MQ cases for
+       PPC601.
+       (umulsidi3,umulsi3_highpart): Ditto.
+       (smulsi3_highpart_no_mq): Add !TARGET_POWER.
+
+Wed Oct 15 18:21:46 1997  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.c (final_prescan_insn): Gut, remove and transform to ...
+       (alpha_handle_trap_shadows): ... a new function.  Handle the entire
+       function in one go.  Emit RTL for trapb, instead of printf directly.
+       (alpha_reorg): New function.  Call alpha_handle_trap_shadows.
+       (trap_pending): Kill global variable.
+       (output_epilog): Don't call final_prescan_insn.
+       (struct shadow_summary): Elide $31 and $f31; now it fits in a word.
+       * alpha.h (FINAL_PRESCAN_INSN): Remove.
+       (MACHINE_DEPENENT_REORG): Define.
+       * alpha.md (jsr patterns with trapb): Stupid and useless.  Kill.
+       (trapb): New insn.
+
+Wed Oct 15 18:16:05 1997  Richard Henderson  <rth@cygnus.com>
+
+       Tune Haifa scheduler for Alpha:
+       * alpha.h (ISSUE_RATE): Define.
+       * alpha.c (alpha_adjust_cost): Handle EV5 mult delay; don't apply
+       EV4 adjustments to EV5.
+       * alpha.md: Remove all scaling from function unit delays.  Rework
+       EV5 function units to match the CPU.
+       (umuldi3_highpart): EV5 added the IMULH insn class.
+
 Wed Oct 15 17:42:41 1997  Jeffrey A Law  (law@cygnus.com)
 
        * pa.c (following_call): Fail if the CALL_INSN is an indirect