OSDN Git Service

* configure.in (sparc64-*-linux*): Use posix threads if enabled.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index af284aa..2639d72 100644 (file)
@@ -1,7 +1,693 @@
+1999-12-07  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.c (hard_32bit_mode_classes): Mark registers
+       suitable for holding OFmode values so that gcc works with complex
+       quad long doubles.
+       (hard_64bit_mode_classes): Likewise.
+
+       * config/sparc/sparc.md (sethi_di_medlow_embmedany_pic): Fix pattern
+       so that it is actually matched.
+       (sethi_di_medlow): Likewise.
+
+       * config/sparc/sparc.h (LEGITIMATE_CONSTANT_P): Consider TFmode 0.0L
+       as legitimate constant if -mvis.
+       * config/sparc/sparc.md (movtf): Likewise.
+       (clear_sf): Use const_double_operand.
+       (clear_sfp, clear_dfp, clear_tf, clear_tfp): New patterns.
+
+       * config/sparc/sparc.c (sparc_emit_float_lib_cmp): New function.
+       * config/sparc/sparc-protos.h (sparc_emit_float_lib_cmp): Prototype.
+       * config/sparc/sparc.h (*_LIBCALL): Only use for _Q_*
+       routines, _Qp_* cannot be handled like that now.
+       (INIT_TARGET_OPTABS): Likewise.
+       * config/sparc/sparc.md (cmptf): Accept soft float ARCH64.
+       (seq, sne, sgt, sge, slt, sle, beq, bne, bgt, bge, blt, ble): Call
+       sparc_emit_float_lib_cmp if ARCH64 and soft float.
+       (extendsftf2, extenddftf2, trunctfsf2, trunctfdf2, floatsitf2,
+       floatditf2, fix_trunctfsi2, fix_trunctfdi2, addtf3, subtf3, multf3,
+       divtf3, sqrttf3): New expanders.
+       (extendsftf2_hq, extenddftf2_hq, trunctfsf2_hq, trunctfdf2_hq,
+       floatsitf2_hq, floatditf2_hq, fix_trunctfsi2_hq, fix_trunctfdi2_hq,
+       addtf3_hq, subtf3_hq, multf3_hq, divtf3_hq, sqrttf3_hq): Rename from
+       non-_hq patterns.
+
+       * configure.in (sparc64-*-linux*): Use posix threads if enabled.
+       * configure: Rebuilt.
+       * config/sparc/linux64.h: Default to -mcpu=ultrasparc if no
+       -mcpu is given and we're doing 64bit compiles.
+
+Tue Dec  7 19:22:06 1999  Richard Henderson  <rth@cygnus.com>
+
+       * loop.h (struct induction): Add multi_insn_incr.
+       * loop.c (basic_induction_var): New multi_insn_incr argument.
+       Set it if we search back through previous insns for the biv.
+       (record_biv): New multi_insn_incr argument; fill in struct induction.
+       (strength_reduce): Discard an iv with multiple bivs, any of
+       which require multiple insns to increment.
+
+1999-12-07  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * invoke.texi (C Dialect Options): Remove -flang-c9x, add -std
+       documentation.
+       
+1999-12-06  David S. Miller  <davem@redhat.com>
+
+       * combine.c (check_promoted_subreg): Do not conditionalize this upon
+       PROMOTE_FUNCTION_RETURN.
+
+Mon Dec  6 15:12:14 1999  Jim Wilson  <wilson@cygnus.com>
+
+       * regmove.c (optimize_reg_copy_1): If no REG_DEAD note, check for
+       and handle REG_UNUSED note on insn.
+
+       * combine.c (force_to_mode, case LSHIFTRT): New local inner_mask.  Set
+       inner_mask instead of mask.
+
+1999-12-06  Brendan Kehoe  <brendan@cygnus.com>
+
+       * dwarf2out.c (field_byte_offset): As with dwarfout.c, size can be
+       zero if there was an error.
+
+1999-12-06  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.md (return_losum_di): Fix typo in asm
+       output string.
+
+       * longlong.h: Fix clobbers in SPARC asm statements.
+
+       * config/sparc/sparc.c (input_operand): Allow HImode and QImode
+       valid sethi operations when TARGET_ARCH64.
+
+       * calls.c (save_fixed_argument_area): If save_mode is BLKmode,
+       always use move_by_pieces to avoid infinite recursion.
+       (restore_fixed_argument_area): Likewise.
+
+       * combine.c (check_promoted_subreg, record_promoted_value): New
+       functions.
+       (combine_instructions): Use them to retain nonzero and sign bit
+       information after SUBREGs are eliminated by optimizations in
+       this pass if PROMOTE_FUNCTION_RETURN.
+
+       * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Document
+       .register declaration. Don't use variables with __ prefixes.
+
+Mon Dec  6 12:24:52 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * fold-const.c (optimize_bit_field_compare): Only use one mode
+       for both RHS and LHS in non-constant case.
+
+1999-12-06  Nathan Sidwell  <nathan@acm.org>
+
+       * frame.c (start_fde_sort): Only allocate erratic array, if
+       linear one was allocated. Return allocated flag.
+       (fde_insert): Only insert, if there's a valid array.
+       (fde_end_sort): Split, sort and merge if linear and erratic
+       arrays exist, else just sort linear one.
+       (search_fdes): New function. Linear search through original fde
+       structure.
+       (frame_init): Permit multiple initializations. Cope with
+       memory shortages.
+       (find_fde): Fallback on linear search, if failed to sort array.
+       (__deregister_frame_info): Only free sorted array, if we
+       allocated it.
+
+1999-12-06  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.h (MUST_PASS_IN_STACK): New macro.
+
+1999-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.c (sparc64_initialize_trampoline): Use gen_flushdi.
+
+1999-12-05  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.h (special_function_p): Declare.
+       * calls.c (special_function_p): Make it global.  Don't take `name'
+       as a parameter.  Fix typo in 1999-11-28 change.
+       (expand_cal): Adjust.
+
+1999-12-04  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.def (EXPR_WITH_FILE_LOCATION): Fix comment formatting.
+       * tree.h (EXPR_WFL_FILENAME): Define in terms of
+       EXPR_WFL_FILENAME_NODE.
+       (EXPR_WFL_FILENAME_NODE): Use the second operand slot rather than
+       the TREE_CHAIN.
+       * print-tree.c (print_note): Print TREE_PRIVATE and
+       TREE_PROTECTED.
+       
+       * dwarf2out.c (add_abstract_origin_attribute): Don't abort when
+       the original die cannot be found.
+
+       * varray.h (varray_head_tag): Add elements_used.
+       (VARRAY_PUSH): New macro.
+       (VARRAY_POP): Likewise.
+       (VARRAY_TOP): Likewise.
+       Add variants of VARRAY_PUSH and VARRAY_POP for all varray element
+       types. 
+       * varray.c (varray_init): Initialize elements_used.
+       * Makefile.in (BASIC_BLOCK_H): Add varray.h.
+       (INTEGRATE_H): New variable.
+       (integrate.o): Depend on INTEGRATE_H.
+       (unroll.o): Likewise.
+       
+       * function.h (insert_block_after_note): Declare.
+       * function.c (insert_block_after_note): Split out from ...
+       (retrofit_block): ... here.
+
+       * stmt.c (expand_fixup): Fix typo in comment.
+
+Sat Dec  4 14:13:38 MET 1999  Jan Hubicka  <hubicka@freesoft.cz>
+
+       * regmove.c (copy_src_to_dest): Remove loop_depth parameter.
+       (optimize_reg_copy_1): Remove REG_N_REFS updating code.
+       (optimize_reg_copy_2, copy_src_to_dest, fixup_match_2): Likewise.
+       (regmove_optimize, fixup_match_1): Likewise.
+
+1999-12-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * flow.c (flow_loops_dump): Add missing argument when calling
+       flow_loop_nested_p.
+
+1999-12-04  Geoffrey Keating  <geoffk@cygnus.com>
+           Greg McGary  <gkm@gnu.org>
+
+       * c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
+       (init_attributes): Add A_NO_LIMIT_STACK.
+       (decl_attributes): Handle A_NO_LIMIT_STACK.
+       * c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
+       * explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
+       Handle stack bounds checking.
+       * flags.h (flag_stack_check): Use the word 'probe' rather than
+       'check', because the flag doesn't actually cause any checking to
+       be done.
+       * function.c (expand_function_start): Set
+       current_function_limit_stack.
+       * function.h (struct function): Add limit_stack.
+       (current_function_limit_stack): Define.
+       * invoke.texi (Code Gen Options): Document new options.
+       * rtl.h: Declare stack_limit_rtx.
+       * toplev.c (stack_limit_rtx): New variable.
+       (decode_f_option): Handle new options -fstack-limit-register=REG,
+       -fstack-limit-symbol=IDENT, -fno-stack-limit.
+       (main): Add stack_limit_rtx as GC root.
+       * tree.h (DECL_NO_LIMIT_STACK): New macro.
+       (struct tree_decl): New member no_limit_stack.
+
+       * config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
+       stack_limit_rtx.
+       * config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx.
+       (conditional_trap+1): Get new mnemonic correct.
+       (conditional_trap+2): New pattern for DImode traps.
+
+       * config/m68k/m68k.c (output_function_prologue): Handle
+       stack_limit_rtx.
+       * config/m68k/m68k.md (trap): New insn.
+       (conditional_trap): New insn.
+       * md.texi (Standard Names): Document `trap' and
+       `conditional_trap'.
+       * optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
+       so a cc0 setter doesn't get emitted at some random place in the
+       function.
+
+       * config/i960/i960.md (trap): New insn.
+       (conditional_trap): New expander.
+       (conditional_trap+1, conditional_trap+2): New insns for signed
+       and unsigned cases.
+       * config/i960/i960.c (i960_function_prologue): Use 
+       STARTING_FRAME_OFFSET.  Handle stack_limit_rtx.
+
+Thu Dec  2 21:22:45 1999  Greg McGary  <gkm@gnu.org>
+                         Geoffrey Keating  <geoffk@cygnus.com>
+
+       * flags.h (warn_padded, warn_packed): Add global var decls.
+       * toplev.c (warn_padded, warn_packed): Add global var defns.
+       (W_options): Add warnings `-Wpacked' and `-Wpadded'.
+       * stor-layout.c (layout_record): Add local variable `type'
+       to hold often-used TREE_TYPE (field).  Add local variable
+       `unpacked_align' to hold alignment that would be in force
+       if no `packed' attribute were present.  Warn if `packed' attribute
+       is unnecessary, or even harmful.  Warn when gcc inserts padding
+       to satisfy alignment requirements of members.  Use NULL_TREE
+       when checking whether var_size is set.
+       * invoke.texi: Document new flags.
+
+1999-12-03  Nathan Sidwell  <nathan@acm.org>
+
+       * frame.c (fde_split): Reimplement to avoid variable sized array.
+
+Thu Dec  2 18:59:48 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * combine.c (try_combine): Before fixing up LOG_LINKS for the
+       i3_subst_into_i2 case, check that GET_CODE (PATTERN (i2)) == PARALLEL.
+
+1999-12-02  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * invoke.texi: Document the mips option -mno-crt0
+
+1999-12-02  Mike Karr  <mkarr@mathworks.com>
+
+       * cccp.c (argdata): Added free_ptr member.
+       (macroexpand): Initialize free_ptr of each argument. When an
+       argument's buffers are freed, if the argument's free_ptr corresponds
+       to a buffer on the input stack, then return the free_ptr to that stack
+       frame, otherwise, free it.
+       (macarg): If an argument begins and ends on the same input stack level,
+       then transfer the free_ptr of that buffer to the argument in case
+       the stack is popped during the processing of a subsequent argument.
+
+1999-12-02  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * loop.c (note_reg_stored): New function.
+       (struct note_reg_stored_arg): New structure.
+       (try_copy_prop): Change to be more conservative; only replace within
+       one extended basic block and stop replacing if a store to the
+       replacement reg is seen.
+
+1999-12-02  Nick Clifton  <nickc@cygnus.com>
+
+       * config/fp-bit.c: Initialise all fields of the NAN
+       constants. 
+
+       * c-lex.c (check_newline): Pass pragma_getc and pragma_ungetc
+       to HANDLE_PRAGMA.
+
+Wed Dec  1 18:16:38 1999  Jan Hubicka  <hubicka@freesoft.cz>
+
+       * i386.md (extend?f?f2): Force the input into a register, not
+       the output.
+
+1999-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.md (movsf_const_intreg): Add constraints for
+       regclass' sake.
+       (movdf_const_intreg_sp32): Likewise. Prefer the memory load
+       alternative because setting up 64bit constant is usually costly,
+       especially when reload is in progress or completed.
+       (movdf_const_intreg_sp64): Likewise.
+       (movdf_const_intreg split): Fix building up constants when
+       HOST_BITS_PER_WIDE_INT is 64 yet long is 32bit.
+
+Wed Dec  1 16:51:22 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * combine.c (if_then_else_cond): Use const_true_rtx instead of
+       const1_rtx for return values in EQ/NE comparison against (const_int 0)
+       case.
+
+       * mn10300.c (REG_SAVE_BYTES): Allocate space for AM33 registers.
+       (asm_file_start): Emit .am33 into assembly file when compiling for
+       the AM33.
+       (print_operand_address): Handle POST_INC addresses.
+       (can_use_return_insn, initial_offset): Check AM33 registers too.
+       (expand_prologue): Check & save AM33 registers too.
+       (expand_epilogue): Similarly.
+       (secondary_reload_class): Handle AM33 specific secondary reloads.
+       (output_tst): Emit efficient code for the AM33 too.
+       * mn10300.h (CPP_SPEC, TARGET_AM33): Define.
+       (TARGET_SWITCHES): Add -mam33 switch.
+       (FIRST_PSEUDO_REGISTER): Handle new AM33 registers.
+       (FIXED_REGISTERS, CALL_USED_REGISTERS): Likewise.
+       (REG_ALLOC_ORDER, CONDITIONAL_REGISTER_USAGE): Likewise.
+       (HARD_REGNO_MODE_OK, MODES_TIEABLE_P): Likewise.
+       (enum reg_class, REG_CLASS_NAMES): Likewise.
+       (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Likewise.
+       (INDEX_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
+       (REGNO_OK_FOR_INDEX_P, PREFERRED_RELOAD_CLASS): Likewise.
+       (PREFERRED_OUTPUT_RELOAD_CLASS, LIMIT_RELOAD_CLASS): Likewise.
+       (REGISTER_MOVE_COST, REGISTER_NAMES): Likewise.
+       (HAVE_POST_INCREMENT): Define.
+       (GO_IF_LEGITIMATE_ADDRESS): Allow POST_INC addresses for the AM33.
+       (GO_IF_MODE_DEPENDENT_ADDRESS): POST_INC is a mode dependent address.
+       * mn10300.md (movqi, movhi, addsi, subsi): Add AM33 variants.
+       (mulsi, andsi, iorsi, xorsi, notsi): Likewise.
+       (ashiftsi, lshiftrtsi, ashiftrtsi): Likewise.
+       (zero_extend to SI from QI/HI): Likewise.
+       (sign_extend to SI from QI/HI): Likewise.
+       (mulsidi3, umulsidi3): New patterns for the AM33.
+       (tstsi with zero extension from QI/HI): Add AM33 variants.
+       (movsi, movsf, movdi, movdf): Generate efficient code for the AM33 too.
+       (return_internal_regs, store_movm): Handle new AM33 registers.
+       * t-mn10300 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Define.
+       (LIBGCC, INSTALL_LIBGCC): Likewise.
+       * invoke.texi: Document new flags.
+
+Fri Nov 26 10:59:12 CET 1999  Jan Hubicka  <hubicka@freesoft.cz>
+
+       * i386.md (addsi3_cc): Add "binary_operator_ok" to the condition.
+       (addsi3_carry): Likewise.
+       (sbbsi3_cc): Add "binary_operator_ok" to the condition.
+       (sbbsi3_carry): Likewise.
+       (mulsi3): Rewrite to expander, ensure that only one operand is memory.
+       (mulhi3): Likewise.
+       (test?i_1): Ensure that only one operand is memory.
+       (conditional move patterns): likewise.
+       (shift and rotate patterns): Rewrite to expander, add
+       "binary_operator_ok" to the condition.
+
+       * i386.md (QImode patterns): Remove '*' before the 'r' constraints.
+       * i386.h (procesor_costs): Add movzbl_load field.
+       (HARD_REGNO_MODE_OK): Accept QImode on non PARTIAL_REGISTER_STALL in
+       non-Q registers, accept DImode registers anywhere.
+       (Q_CLASS_P): New.
+       (MEMORY_MOVE_COST): Calculate QImode moves correctly.
+       * i386.c (*_cost): Set value for movxbl_load field.
+
+       * (addsi): New add to lea splitter.
+       (ashlsi): Likewise.
+       (lea to add/shift peep2): New.
+
+1999-12-01  Mark Salter <msalter@cygnus.com>
+
+       * config/mips/elf.h (STARTFILE_SPEC): Add no-crt0.
+       * config/mips/elf64.h (STARTFILE_SPEC): Add no-crt0.
+       * config/mips/mips.h (TARGET_SWITCHES): Add no-crt0.
+
+Tue Nov 30 15:20:52 MET 1999  Jan Hubicka  <hubicka@freesoft.cz>
+
+       * i386.c (ix86_expand_move): Never add clobbers to move patterns.
+       * i386.md (movsi_xor): New.
+       (movsi_or): New.
+       (movsi_1, movhi_1, movqi_1): Remove.
+       (movsi_2): Rename to movsi_1.
+       (movhi_2): Rename to movhi_1.
+       (movqi_2): Rename to movqi_1.
+       (movdi_1): Remove; remove splitter.
+       (movdi_2): Rename to movdi_1.
+       (divmodsi4 splitter): Do not emit clobbers for move patterns.
+       (long move peep2): Do not create QI or HI mode mov0s
+       (mov -1,reg -> or peep2s): Enable again, rewrite to single peephole.
+
+       * i386.md (zero_extend?i?i2): Rewrite to expanders; new patterns,
+       rewrite splitters.
+
+       * i386.md (neg?f2_if): Split "r" and "f" to separate alternatives.
+       (abs?f2_if): Likewise.
+
+1999-11-30  Alex Samuel  <samuel@codesourcery.com>
+
+       * ggc.h (ggc_test_and_set_mark): New macro.
+       (ggc_mark_rtx): Use ggc_test_and_set_mark.
+       (ggc_mark_tree): Likewise.
+       (ggc_mark_rtvec): Likewise.
+       * ggc-common.c (ggc_mark_rtx_children): Reduce recursion. 
+
+1999-11-30  Jason Merrill  <jason@casey.cygnus.com>
+
+       * dwarf2out.c (scope_die_for): Only handle types.  Only search for
+       containing types.
+       (decl_scope_table): Just an array of trees now.
+       (push_decl_scope): Simplify.
+       (dwarf2out_init): Adjust.
+       (local_scope_p): New fn.
+       (gen_inlined_enumeration_type_die): Don't call scope_die_for.
+       (gen_inlined_union_type_die, gen_inlined_structure_type_die): Likewise.
+       (gen_typedef_die): Likewise.
+       (gen_lexical_block_die): Don't call push/pop_decl_scope.
+       (gen_inlined_subroutine_die): Likewise.
+       (gen_abstract_function): Set current_function_decl temporarily.
+       (gen_subprogram_die): Don't check DECL_ABSTRACT to set declaration.
+       Handle block extern declarations.  Don't call push/pop_decl_scope.
+       (gen_decl_die): Fix logic for block externs.
+
+1999-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * calls.c (special_function_p): Remove `realloc' and add `strdup'
+       to the list of functions which have attribute malloc by default.
+
+1999-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * c-lex.c (yylex): With -Wtraditional, when the ANSI type of an
+       integer constant does not match the traditional type, limit the
+       warnings to cases where the base of the type is ten.
+
+       * invoke.texi (-Wtraditional): Document it.
+
+Tue Nov 30 15:18:35 1999  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+
+       * combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST
+       * rs6000.md: Only access a CONST_INT with INTVAL
+
+Tue Nov 30 14:21:00 1999  Richard Henderson  <rth@cygnus.com>
+
+       * lcm.c (compute_laterin): Cast bb->aux to size_t not int.
+       (compute_nearerout): Likewise.
+       * ggc-page.c (ggc_page_print_statistics): Explicitly cast
+       size_t to unsigned long for formatting.
+
+1999-11-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.h (FIXED_REGISTERS, CONDITIONAL_REGISTER_USAGE):
+       Allow the user to override call-used/fixed state of %g2-5
+       registers from the command line (with the exception of %g4 for
+       embedded model).
+       (REG_LEAF_ALLOC_ORDER): Move %g1 and %g4-7 registers to front, so that
+       there is a higher chance of having a leaf function.
+       (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Provide separate macros
+       for ARCH64 which has %ccr register.
+       * config/sparc/sparc.md (return_losum_si, return_losum_di): New
+       patterns.
+       * config/sparc/sparc.c (eligible_for_epilogue_delay): For the return
+       insn accept into delay slot any insn which does not use %[ol]
+       registers.  Accept some LO_SUM and shift left by 1 for the normal
+       restore case.
+       (output_function_epilogue): Likewise.
+       (epilogue_renumber): Added argument which inhibits any renumbering
+       and just tests if the rtx does not use any %[ol] registers.
+       (output_return): Reflect above change.
+
+1999-11-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.c (sparc_va_arg): Fix sparc64 va_arg
+       aggregate passing for sizes <= 16 bytes.
+
+1999-11-30  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * cse.c (FIXED_REGNO_P): Delete tests for OVERLAPPING_REGNO_P.
+       * global.c (global_alloc): Delete [OVERLAPPING_REGNO_P] code.
+       * reload.c (find_dummy_reload): Likewise.
+       (find_equiv_reg): Likewise; also for INSN_CLOBBERS_REGNO_P.
+       * reload1.c (reload_as_needed): Likewise.
+       * stupid.c (stupid_find_reg): Likewise.
+       * tm.texi (Obsolete Register Macros): Delete section.
+       * gmicro.h: Remove all traces of the two macros.
+       * i386.h: Likewise.
+       * m88k.h: Likewise.
+       * mips.h: Likewise.
+
+1999-11-30  Brendan Kehoe  <brendan@cygnus.com>
+
+       * sparc.h (MASK_FASTER_STRUCTS, TARGET_FASTER_STRUCTS): Define.
+       (TARGET_SWITCHES): Add -mfaster-structs/-mno-faster-structs flags.
+       (ROUND_TYPE_ALIGN): Use better value if -mfaster-structs.
+       * sparc.md (sparclite86x_branch, sparclite86x_shift): New function
+       units for the sparclite86x chip.
+       (flush): Revert October 14th change; add SImode specifically.
+       (flushdi): Copy of flush, but DImode, to avoid genrecog warnings.
+       * invoke.texi: Document it.
+
+Tue Nov 30 14:58:14 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/mn10200/mn10200.h (PREDICATE_CODES): Add
+       psimode_truncation_operand.
+
+       * config/mn10200/mn10200.c (psimode_truncation_operand): New
+       function.  Return true if the operand is either a MEM valid
+       for a PSImode address or not a MEM at all.
+
+       * config/mn10200/mn10200.md (truncsipsi2): Use
+       psimode_truncation_operand.
+
+1999-11-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * flow.c (flow_nodes_print, flow_loops_cfg_dump): New functions.
+       (flow_loop_nested_p, flow_loops_dump, flow_loops_free): Likewise.
+       (flow_loop_exits_find, flow_loop_nodes_find): Likewise.
+       (flow_depth_first_order_compute, flow_loop_pre_header_find): Likewise.
+       (flow_loop_tree_node_add, flow_loops_tree_build): Likewise.
+       (flow_loop_level_compute, low_loops_level_compute): Likewise.
+       (flow_loops_find, flow_loop_outside_edge_p): Likewise.
+       * basic-block.h: Protect from multiple inclusion.
+       (flow_loops_find, flow_loops_free, flow_loop_dump): Add protoypes.
+       (struct loops, struct loop): Define structures.
+       * sbitmap.c (sbitmap_a_subset_b_p): New function.
+       * sbitmap.h: Protect from multiple inclusion.
+       (sbitmap_a_subset_b_p): Add prototype.
+       * Makefile.in (LOOP_H): New macro.
+       (stmt.o, integrate.o, loop.o, unroll.o): Replace loop.h with LOOP_H.
+
+Tue Nov 30 01:34:47 1999  Philippe De Muyter  <phdm@macqel.be>
+
+       * cppinit.c (CAT): The argument list of this macro may not contain
+       spaces !
+
+1999-11-29  David S. Miller  <davem@redhat.com>
+
+       Move quantity tables and register equivalence chains into
+       per-qty and per-register structure arrays respectively.
+       * cse.c (qty_first_reg, qty_last_reg, qty_mode, qty_const,
+       qty_const_insn, qty_comparison_code, qty_comparison_const,
+       qty_comparison_qty): Delete, replace with...
+       (qty_table): this structure table.
+       (reg_next_eqv, reg_prev_eqv): Delete, replace with...
+       (reg_eqv_table): this structure table.
+       (make_new_qty): Add argument MODE.  Caller updated.
+       Update to use qty_table and reg_eqv_table.
+       (make_regs_eqv, delete_reg_equiv, insert_regs,
+       insert, exp_equiv_p, cse_rtx_varies_p, canon_reg,
+       fold_rtx, equiv_constant, record_jump_cond, cse_insn,
+       cse_process_notes, cse_main, cse_basic_block): Likewise.
+
+Mon Nov 29 16:56:42 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * fold-const.c (extract_muldiv, case {MIN,MAX}_EXPR): Reverse
+       operation if C is negative.
+       (extract_muldiv, case SAVE_EXPR): Supresss if arg has side effects.
+       (extract_muldiv, case {PLUS,MINUS}_EXPR): Don't apply distributive
+       law for some divisions if constant is negative and change other
+       divisions to the opposite rounding.
+
+       * expr.c (store_constructor_field): If bit position is not multiple
+       of alignment of TARGET's mode, use BLKmode.
+
+       * expr.c (expand_expr_unaligned): Add more code from full case
+       that is needed when OP0 is in a register.
+
+Mon Nov 29 18:09:39 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * dwarfout.c (field_byte_offset): Size can be zero if there was
+       an error.
+
+1999-11-29  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * fold-const.c (split_tree): Delete unused vars ORIG_IN and TYPE.
+       (associate_trees): Delete unused var TEM.
+       (extract_muldiv): Delete unused var CANCEL_P.
+                       
+       * fold-const.c [TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT]
+       (target_isinf, target_isnan, target_negative): Add return types to
+       function definitions.
+
+1999-11-29  Bruce Korb  <autogen@linuxbox.com>
+
+       * fixinc/fixincl.c(process): don't skip GLIBC files any more.
+       * fixinc/hackshell.tpl: ditto
+       * fixinc/fixtests.c(double_slash_test): more C++ header testing
+       * fixinc/inclhack.def(AAB_fd_zero_glibc*): corrected spelling of mach
+
+1999-11-29  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * reload.c (push_reload): When looking for a register to put into
+       reg_rtx, make sure all hard regs in a multi-reg register are in the
+       right class and nonfixed.
+
+       * haifa-sched.c (reg_last_uses, reg_last_sets, reg_last_clobbers,
+       pending_read_insns, pending_write_insns, pending_read_mems,
+       pending_write_mems, pending_list_length, last_pending_memory_flush,
+       last_function_call, sched_before_next_call): Move static variables
+       into a structure.
+       (bb_ prefixed versions): Replace with single array bb_deps.
+       (struct deps): New structure.
+       (add_insn_mem_dependence, flush_pending_lists, sched_analyze_1,
+       sched_analyze_2, sched_analyze_insn, sched_analyze): Accept new
+       argument of type "struct deps *"; use that instead of global
+       variables.  All callers changed.
+       (init_rgn_data_dependencies): Delete function.
+       (init_rtx_vector): Delete function.
+       (init_deps): New function.
+
+       (free_pending_lists): Simplify, we always use the bb_deps array even
+       if only one basic block.
+       (compute_block_backward_dependences): Likewise.
+       (schedule_region): Likewise.
+
+       (propagate_deps): New function, broken out of
+       compute_block_backward_dependences.
+       (compute_block_backward_dependences): Use it.
+
+       * alpha.md: Delete useless patterns that tried to work around
+       register elimination problems.
+
+       * unroll.c (loop_iterations): Don't abort if iteration variable
+       was made by loop.
+
+       From Joern Rennecke:
+       * reload1.c (reloads_conflict): Reverse test comparing operand
+       numbers when testing for conflict between output/outaddr reloads.
+
+1999-11-29  David S. Miller  <davem@redhat.com>
+
+       * config/sparc/sparc.c (init_cumulative_args): Fix type of third
+       arg.
+       * config/sparc/sparc-protos.h: Update proto, move into RTX_CODE.
+
+1999-11-28  Robert Lipe  <robertl@cygnus.com>
+
+       * i386/sco5.h (FINI_SECTION_ASM_OP_COFF): Move destructor fn
+       table from .fini into .dtor.                                
+
+1999-11-28  Anthony Green  <green@cygnus.com>
+
+       * tree.h (struct tree_decl): Add malloc_flag.
+       (DECL_IS_MALLOC): Define.
+       * c-common.c (attrs): Add A_MALLOC attribute.
+       (init_attributes): Add this attribute to the table.
+       (decl_attributes): Handle malloc attribute.
+       * calls.c (special_function_p): Check for the malloc attribute.
+       * extend.texi (Function Attributes): Document malloc attribute.
+
+Sun Nov 28 13:21:00 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * pa.md (reload shift-add patterns): Remove.
+
+1999-11-28 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
+
+       * reorg.c (dbr_schedule) Print more statistics. Corrected
+       problem when printing info when 3 delay slots are filled.
+
+1999-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+       * combine.c (setup_incoming_promotions): Pass an outgoing
+       regno to FUNCTION_ARG_REGNO_P which it expects.
+
+1999-11-28  Andreas Jaeger  <aj@suse.de>
+
+       * mips/linux.h (CPP_PREDEFINES): Undefine before redefining.
+
+Sun Nov 28 00:48:15 1999  Philippe De Muyter  <phdm@macqel.be>
+
+       * cccp.c (do_include): Avoid initialization of automatic variable.
+
+       * integrate.c (mark_stores): Function definition made void, to match
+       previous declaration.
+       * regclass.c (dump_regclass): Ditto.
+       * Makefile.in (WARN_CFLAGS): Macro augmented by `-Wtraditional'.
+
+Sat Nov 27 08:38:26 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * expr.c (store_constructor): Use EXACT_DIV_EXPR when dividend is
+       known to be multiple of divisor.
+
+       * expr.c (store_constructor): Don't clobber TARGET if CLEARED.
+
+       * combine.c (try_combine): Add code to try to merge a set of a
+       two-word pseudo to a constant with a setting of one of those words
+       to a constant.
+
+       * fold-const.c (negate_expr, associate_trees, extract_muldiv): New.
+       (split_tree): Completely rework to make more general.
+       (make_range, fold): Call negate_expr.
+       (fold, case NEGATE_EXPR): Simplify -(a-b) is -ffast-math.
+       (fold, associate): Call new split_tree and associate_trees.
+       (fold, case MULT_EXPR, case *_{DIV,MOD}_EXPR): Call extract_muldiv.
+
+1999-11-26  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * loop.c (try_copy_prop): Avoid GNU C extension.
+
 1999-11-25  Mark Mitchell  <mark@codesourcery.com>
 
-       * except.c (init_eh_for_function): But still zero
-       eh_return_context, eh_return_stack_adjust, and eh_return_handler.
+       * except.c (init_eh_for_function): Still zero eh_return_context,
+       eh_return_stack_adjust, and eh_return_handler.
 
        * except.h (eh_status): Adjust documentation for x_protect_list.
        (begin_protect_partials): New function.
@@ -238,10 +924,10 @@ Mon Nov 22 23:09:44 1999  David O'Brien  <obrien@FreeBSD.org>
        directly by i386/freebsd.h.
        * configure: Rebuilt.
 
-        * xm-i386.h: Define `__i386__' if not defined, rather than `i386'
+       * xm-i386.h: Define `__i386__' if not defined, rather than `i386'
        which is in the user's namespace.
-        * libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs.
-        `i386' which is not in our namespace.
+       * libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs.
+       `i386' which is not in our namespace.
 
 Mon Nov 22 22:58:01 1999  "R. Kelley Cook" <KelleyCook@attglobal.net>
 
@@ -313,12 +999,12 @@ Fri Nov 12 14:08:40 1999  Andrew Haley  <aph@cygnus.com>
 
 1999-11-22  Andrew Haley  <aph@cygnus.com>
 
-        * varasm.c (function_defined): Remove.
-        (make_function_rtl): Don't set function_defined.
-        (make_decl_rtl): Remove global register warning.
-        * regclass.c (no_global_reg_vars): New variable.
-        (globalize_reg): Warn if function has already been defined.
-        (regclass_init): Set no_global_reg_vars.
+       * varasm.c (function_defined): Remove.
+       (make_function_rtl): Don't set function_defined.
+       (make_decl_rtl): Remove global register warning.
+       * regclass.c (no_global_reg_vars): New variable.
+       (globalize_reg): Warn if function has already been defined.
+       (regclass_init): Set no_global_reg_vars.
 
 Mon Nov 22 14:42:22 MET 1999  Jan Hubicka  <hubicka@freesoft.cz>
 
@@ -423,7 +1109,7 @@ Thu Nov 18 17:29:34 MST 1999       Diego Novillo <dnovillo@cygnus.com>
 
 Fri Nov 18 13:39:22 CET 1999  Jan Hubicka  <hubicka@freesoft.cz>
 
-       * i386.h (struct_processor_costs): New fileds int_load, int_store,
+       * i386.h (struct_processor_costs): New fields int_load, int_store,
        fp_move, fp_load and fp_store
        (REGISTER_MOVE_COST): Fix comment, calculate exactly the cost of
        fp->int moves