+2000-04-15 David Edelsohn <edelsohn@gnu.org>
+
+ * toplev.c (display_help): Prefix "f" to "sched-verbose=".
+ * haifa-sched.c: Update -fsched-verbose comments to use "=".
+
+Sat Apr 15 10:59:19 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * Makefile.in (ggc-page.o): Now includes toplev.h.
+ * ggc-page.c (toplev.h): Now included.
+ (gc_time): Remove declaration.
+ (ggc_collect): TIME now long.
+ * toplev.c (parse_time, varasm_time, gc_time): Still global; all
+ others static.
+ * toplev.h (gc_time, parse_time, gc_time): New declarations.
+
+ * toplev.c: Make *_time variable long to reduce chance of overflow.
+ (TIMEVAR): Likewise for `otime'.
+ (print_time): Arg is now long; compute percentage in FP and round.
+ * toplev.h (print_time): Arg is long.
+
+ * tree.c: Minor whitespace changes.
+
+ * configure.in (alpha*-*-*): Add config/alpha/t-alpha.
+ * configure: Rebuilt.
+ * libgcc2.c (__fixunstfDI): Renamed from __fixunstfdi.
+ (__fixunsxfDI): Renamed from __fixunsxfdi.
+ (__fixunsdfDI): Renamed from __fixunsdfdi.
+ (__fixunssfDI): Renamed from __fixunssfdi.
+ (__floatdisf): Use proper type in REP_BIT macro.
+ (__fixunsxfSI): Renamed from __fixunsxfsi.
+ (__fixunsdfSI): Renamed from __fixunsdfsi.
+ (__fixunssfSI): Renamed from __fixunssfsi.
+ * libgcc2.h: Add cases for MIN_UNITS_PER_WORD > 4.
+ Change location of macros and upper-case some names as above.
+ * longlong.h ([alpha]): Use PARAMS, not __P in decl of __udiv__qrnnd.
+ * config/alpha/t-alpha, config/alpha/qrnnd.asm: New files.
+
+ * varasm.c (assemble_variable): Add cast to remove warning.
+ (immed_real_const_1): Only use CONST[01]_RTX if not in nested function.
+
+ * flow.c (count_basic_blocks, find_basic_blocks_1): Remove last change.
+ * optabs.c (emit_libcall_block): If have REG_EH_REGION, update
+ region number to -1.
+
+2000-04-15 Richard Earnshaw (rearnsah@arm.com)
+
+ * emit-rtl.c (unshare_all_rtl_again): Unmark everything, then
+ call unshare_all_rtl.
+
+ * arm.md (movhi): REGNO_POINTER_ALIGN is now bits.
+
+Fri Apr 14 16:58:45 2000 Jim Wilson <wilson@cygnus.com>
+
+ * config/ia64/lib1funcs.asm (__divdi3, __moddi3, __udivdi3, __umoddi3):
+ Use .s1 not .s0 for all FP instructions.
+
+2000-04-14 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpplex.c (cpp_output_tokens, cpp_scan_buffer_nooutput): New public
+ interfaces.
+ (safe_fwrite, output_line_command): New static functions.
+ (cpp_expand_to_buffer): Now private to cpplib.
+ (cpp_scan_buffer): Take a printer.
+
+ * cpphash.h: Update prototypes.
+ * cpplib.h: Update prototypes.
+ (cpp_printer): New.
+ (cpp_buffer): Remove last_nominal_fname.
+ (cpp_reader): Remove lineno.
+
+ * cppmain.c: Use a cpp_printer.
+ * fix-header.c: No need to inhibit line commands. Call
+ cpp_start_read with no printer.
+
+ * cpperror.c (cpp_notice_from_errno): Provide default name.
+ * cppfiles.c (make_IHASH, _cpp_fake_ihash): New functions.
+ (find_include_file, cpp_read_file): Use make_IHASH.
+ (file_cleanup): Set control_macro and clear
+ input_stack_listing_current here.
+ (_cpp_execute_include): Don't output entering-file marker.
+ * cpphash.c (special_symbol): Look for the line number in the
+ buffer, not the reader.
+ (_cpp_macroexpand): No need to disable line commands.
+ (_cpp_dump_definition): No need to generate line commands.
+ (dump_hash_helper): Remove excess newline from output.
+ * cppinit.c (dump_special_to_buffer): No need to generate line
+ commands.
+ (cpp_printer_init): New.
+ (cpp_start_read): Take a printer, and start it up if it's not
+ NULL. No need to generate line commands.
+ (cpp_finish): Expect no buffers stacked at all. Take a
+ printer argument, and flush the output buffer if it's not
+ NULL.
+ * cpplex.c (_cpp_lex_token): Return EOF if there's no buffer.
+ Don't put two hashes at the beginning of an assertion.
+ (cpp_get_token): Don't increment pfile->lineno or emit line
+ commands here. Return EOF if there's no buffer when we get
+ EOF.
+ * cpplib.c (do_define, skip_if_group):
+ No need to disable line commands.
+ (_cpp_output_line_command): Delete function.
+ (do_line): Don't emit line commands here, but set things up so
+ they will be emitted if necessary. Use _cpp_fake_ihash to
+ make unique nominal_fnames if necessary.
+ (do_elif, do_else, _cpp_handle_eof): Call cpp_error_with_line
+ with 0 for column, not -1.
+ (_cpp_handle_eof): Don't set the control macro here. Don't
+ clear input_stack_listing_current here. Don't emit line
+ commands.
+
+2000-04-14 Geoff Keating <geoffk@cygnus.com>
+
+ * config/rs6000/sysv4.h (LINK_START_SOLARIS_SPEC): Define to empty
+ always, use the default SVR4 start address.
+
+ * config/rs6000/linux.h (LINK_SPEC): Don't define.
+ (LINK_SHLIB_SPEC): Define.
+ (LINK_START_DEFAULT_SPEC): Define.
+ (LINK_OS_DEFAULT_SPEC): Define.
+
+ * config/rs6000/sysv4.h (ENDFILE_SPEC): Use the %(endfile_*) macros.
+
+ * config/rs6000/eabi.asm (__eabi): Call __init rather than
+ __do_global_ctors to handle constructors.
+ * config/rs6000/sysv4.h (STARTFILE_ADS_SPEC): Use crtbegin.
+ (STARTFILE_YELLOWKNIFE_SPEC): Likewise.
+ (STARTFILE_MVME_SPEC): Likewise.
+ (STARTFILE_SIM_SPEC): Likewise.
+ (ENDFILE_ADS_SPEC): Use crtend.
+ (ENDFILE_YELLOWKNIFE_SPEC): Likewise.
+ (ENDFILE_MVME_SPEC): Likewise.
+ (ENDFILE_SIM_SPEC): Likewise.
+ (STARTFILE_SOLARIS_SPEC): Use crtbegin/crtbeginS.
+ (ENDFILE_SOLARIS_SPEC): Use crtend/crtendS.
+ (STARTFILE_LINUX_SPEC): Use crtbeginS for shared objects.
+ (ENDFILE_LINUX_SPEC): Use crtendS for shared objects.
+ * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Don't build eabi-ctors.o.
+ (EXTRA_MULTILIB_PARTS): Build crtbeginS/crtendS.
+ (CRTSTUFF_T_CFLAGS_S): Define.
+ * config/rs6000/eabi-ctors.c: Delete.
+
+ * config/rs6000/eabi-ci.asm (__init): Align stack to 16-byte
+ boundary.
+ (__fini): Likewise.
+ * config/rs6000/eabi-cn.asm (__init): Allow for 16-byte stack frame.
+ boundary.
+ (__fini): Likewise.
+
+Fri Apr 14 16:09:02 2000 Jim Wilson <wilson@cygnus.com>
+
+ * combine.c (force_to_mode, case LSHIFTRT): Check that shift shift
+ plus mask size is smaller or equal to the mode size.
+
+Fri Apr 14 18:07:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * print-rtl.c (print_rtx, case NOTE): Don't blow up if NOTE_BASIC_BLOCK
+ not yet set.
+
+ * expr.c (reload.h): Now included.
+ (emit_block_move): Set volatile_ok when checking for movstr.
+ (emit_move_1): Check for replacements in addresses in multi-word case.
+ * Makefile.in (expr.o): Now includes reload.h.
+
+ * flow.c (count_basic_blocks): Remove unused var PREV_CALL.
+ Never have a LIBCALL end a basic block.
+ (find_basic_blocks_1): Likewise.
+ Reorganize CALL_INSN cases.
+
+ * sbitmap.h (EXECUTE_IF_SET_IN_SBITMAP): Revert last change.
+
+Fri Apr 14 10:54:22 2000 Jim Wilson <wilson@cygnus.com>
+
+ * config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Drop obsolete
+ completers from mov.ret instruction.
+
+2000-04-14 Richard Henderson <rth@cygnus.com>
+
+ * fold-const.c (extract_muldiv): Don't distribute and widen
+ multiply across plus for non-sizetype unsigned types.
+
+2000-04-14 Richard Henderson <rth@cygnus.com>
+
+ * flow.c (find_auto_inc): Don't autoinc eliminable registers.
+ If the original source is dead in the incr insn, it's dead now.
+
+Fri Apr 14 07:40:32 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * stor-layout.c (layout_decl): Properly compare KNOWN_ALIGN to
+ see if DECL_BIT_FIELD needs to still be set.
+
+ * tree.h (struct tree_type): Make PRECISION 9 bits and MODE 7.
+
+ * dbxout.c (dbxout_type, case INTEGER_TYPE): Don't call
+ print_int_cst_octal with something that's not an INTEGER_CST.
+
+ * config/alpha/alpha.c (alpha_emit_floatuns): Ensure we pass a REG
+ and not a SUBREG to a FLOAT rtl.
+
+Thu Apr 13 19:39:56 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * emit-rtl.c (try_split): Avoid infinite loop if the split
+ results in a sequence that contains the original insn.
+
+2000-04-13 Andreas Jaeger <aj@suse.de>
+
+ * config/mips/mips.c (expand_block_move): Pass alignment
+ argument to move_by_pieces in bits, not bytes.
+
+ * config/mips/linux.h (CPP_PREDEFINES): Also define __PIC__ and
+ __pic__ for little endian.
+
+2000-04-13 Andreas Jaeger <aj@suse.de>
+
+ * config/i386/i386-protos.h: Add prototype for
+ uno_comparison_operator.
+
+Thu Apr 13 15:55:08 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * alias.c (nonlocal_reference_p): Take care of CALL_INSNS's fusage.
+ * calls.c (ECF_PURE): New flag.
+ (emit_call_1): Handle ECF_PURE calls.
+ (initialize_argument_information): Unset ECF_PURE flag too.
+ (precompute_arguments): Precompute for ECF_PURE too.
+ (expand_call): Handle ECF_PURE calls too.
+ (emit_library_call_value_1): Rename no_queue argument to fn_type,
+ accept value of 2 as pure function.
+ (emit_library_call_value, emit_library_call): Rename no_queue argument
+ to fn_type.
+ * optabs.c (prepare_cmp_insn): Pass fn_type 2 to memcmp call.
+
+ * tree.h (DECL_IS_PURE): New macro.
+ (struct tree_decl): Add pure_flag.
+ * c-common.c (enum attrs): Add attribute "pure".
+ (init_attributes): Initialize attribute "pure"
+ (decl_attributes): Handle attribute "pure".
+ * extend.texi (Attribute "pure"): Document.
+ * calls.c (expand_call): Add (mem:BLK (scratch)) to "equal from"
+ in pure function.
+ (flags_from_decl_or_type): Support attribute "pure".
+
+2000-04-13 Jason Merrill <jason@casey.cygnus.com>
+
+ * cpplex.c (_cpp_lex_token): Handle digraphs. Don't null-terminate
+ the token except for numbers and identifiers.
+
+Thu Apr 13 00:09:16 EDT 2000 John Wehle (john@feith.com)
+
+ * i386.c (ix86_expand_binary_operator,
+ ix86_expand_unary_operator): Check no_new_pseudos
+ instead of reload_in_progress and reload_completed.
+ (ix86_split_ashldi, ix86_split_ashrdi,
+ ix86_split_lshrdi): Check no_new_pseudos instead
+ of reload_completed.
+
+2000-04-12 Jeffrey A Law (law@cygnus.com)
+
+ * function.c (purge_addressof): Unshare any shared rtl created by
+ purge_addressof and its children.
+
+2000-04-12 Mark Mitchell <mark@codesourcery.com>
+
+ * function.c (aggregate_value_p): VOID_TYPE nodes are never
+ aggregates.
+
+2000-04-05 Andreas Jaeger <aj@suse.de>
+
+ * config/mips/linux.h (SUBTARGET_ASM_SPEC): Use proper flags if
+ not compiling PIC code, add flags for mabi=64.
+ (SUBTARGET_CPP_SIZE_SPEC): New.
+ (SUBTARGET_CPP_SPEC): New.
+ (CPP_PREDEFINES): Define __PIC__ and __pic__. PIC code is default
+ for MIPS/Linux and lots of code needs these defines.
+
+Wed Apr 12 22:44:11 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * reorg.c (fill_slots_from_thread): Check side_effects_p when
+ trying the "opposite arithmetic" approach.
+
+Wed Apr 12 20:51:20 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.h (STRUCT_VALUE): Just 0 for TARGET_HITACHI.
+ (struct sh_args): Add new field force_mem.
+ (INIT_CUMULATIVE_ARGS): Initialize it.
+ (FUNCTION_ARG, FUNCTION_ARG_ADVANCE): Act on it.
+
+Wed Apr 12 17:20:41 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * calls.c (expand_call): Do not reverse args in "equal from" field.
+ (emit_library_call_value_1): Emit_libcall_block for const and pure
+ function.
+
+Wed Apr 12 16:00:25 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * reload1.c (reload_combine): Don't enable optimization for fixed
+ registers when encountering a BARRIER.
+
+Wed Apr 12 15:54:11 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * builtins.c (expand_builtin_memcmp): Do expansion even with
+ !HAVE_cmpstrsi, do libcall when gen_strcmpsi fails.
+
+ * calls.c (expand_call): Do NO_DEFER_POP unconditionally once
+ stack is propertly aligned; add sanity checking for aligned
+ stack pointer.
+ (expand_library_call_value_1): Add sanity checking for aligned
+ stack pointer.
+
+Wed Apr 12 07:51:54 2000 Catherine Moore <clm@cygnus.com>
+
+ * calls.c (emit_library_call_value_1): Change 3rd arg to
+ locate_and_pad_parm to disregard the setting of partial.
+
+Wed Apr 12 08:47:38 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * tree.c (unsave_expr_now_r, unsafe_for_reeval): Properly do TREE_LIST.
+
+ * print-rtl.c (print_rtx): For CALL_PLACEHOLDER, output the
+ CALL_INSN from the normal case.
+
+Fri Apr 7 12:23:04 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * i386.c (x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8):
+ New global variables.
+ (ix86_emit_epilogue_adjustment): Do not attempt to use pop for the
+ adjustment.
+ * i386.h (x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8):
+ Declare,
+ (TARGET_SUB_ESP_4, TARGET_SUB_ESP_8, TARGET_ADD_ESP_4,
+ TARGET_ADD_ESP_8): New macros.
+ * i386.md: Add peep2s to convert esp adjustments to push and pop
+ instructions.
+ (pushsi_prologue, popsi_epilogue): New patterns.
+
+2000-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * real.c (toe64): Remove stale #endif from the last change.
+
+2000-04-12 Stephen L Moshier <moshier@mediaone.net>
+
+ * real.h (MAX_LONG_DOUBLE_TYPE_SIZE): Comment.
+ * real.c (toe64): Revert previous change.
+
+2000-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * objc/objc-act.c: Include ggc.h.
+ (objc_tree_index, objc_global_trees): Convert most of the
+ static tree variables into a static array with previous names
+ as defines.
+ (objc_ellipsis_node): New variable.
+ (lang_init): Call objc_act_parse_init and c_parse_init.
+ Create objc_ellipsis_node.
+ (build_selector_translation_table): Use objc_ellipsis_node instead
+ of (tree)1.
+ (hack_method_prototype): Likewise.
+ (get_arg_type_list): Likewise.
+ (start_method_def): Likewise.
+ (continue_method_def): Likewise.
+ (gen_method_decl): Likewise.
+ (ggc_mark_imp_list): New function.
+ (ggc_mark_hash_table): New function.
+ (objc_act_parse_init): New function.
+ * objc/objc-act.h (objc_ellipsis_node): Add extern variable.
+ * c-parse.in (c_parse_init): For objc add roots of objc specific
+ local tree variables.
+ * objc/objc-parse.y: Rebuilt.
+ * objc/objc-parse.c: Rebuilt.
+ (opt_parm_list): Use objc_ellipsis_node instead of (tree)1.
+
+Wed Apr 12 01:00:44 EDT 2000 John Wehle (john@feith.com)
+
+ * cse.c (delete_trivially_dead_insns): Also delete insns
+ that copy a register to itself where the destination is
+ a strict_low_part.
+
+2000-04-11 Richard Henderson <rth@cygnus.com>
+
+ * flow.c (struct propagate_block_info): Add new_dead, new_live.
+ (propagate_block): Initialize them. Use them in parallel instead
+ of one tmp variable, ie revert much of the 0408 and 0407 functional
+ changes, but keep the structural changes.
+ (mark_set_regs): Take new_dead from propagate_block_info instead.
+ (mark_set_1, mark_set_reg): Likewise.
+ (mark_used_regs): Likewise with new_live.
+ (mark_used_reg): Likewise. Revert 0408 change.
+
+2000-04-11 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/arm.h: (INCOMING_RETURN_ADDR_RTX): Remove Dwarf2
+ restriction.
+ (DWARF_FRAME_RETURN_COLUMN): Remove Dwarf2 restriction.
+
+2000-04-11 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+
+ * config/elfos.h (SELECT_SECTION): Decide whether to use a data or
+ const section to output a CONSTRUCTOR based on the same conditions
+ used for VAR_DECLs.
+
+Tue Apr 11 09:55:59 2000 Jeffrey A Law (law@cygnus.com)
+
+ * pa/long-double.h (FIX_TRUNCTFSI2_LIBCALL): Tweak for PA64.
+ * pa/pa-protos.h (output_call): Add additional argument indicating
+ if the call is a sibling/tail call.
+ (compute_zdepdi_operands, output_64bit_and): Prototype new functions.
+ (compute_64bit_ior, cmpib_comparison_operator): Likewise.
+ (function_arg, function_arg_partial_nregs): Likewise
+ * pa/pa.c (override_options): Always set flag_pic for TARGET_64BIT.
+ (emit_move_sequence): Zero extend certain constants as needed
+ for TARGET_64BIT.
+ (compute_zdepdi_operands, output_64bit_and): New functions.
+ (output_64bit_ior, function_arg): Likewise.
+ (cmpib_comparison_operator, function_arg_partial_nregs): Likewise.
+ (compute_frame_size, hppa_expand_prologue): Handle TARGET_64BIT.
+ (hppa_expand_epilogue, return_addr_rtx, hppa_va_arg): Likewise.
+ (hppa_builtin_saveregs, output_cbranch, output_bb): Likewise.
+ (output_bvb): Likewise.
+ (output_millicode_call): Return pointer is in %r2 for TARGET_64BIT.
+ (output_call): New argument 'sibcall'. Generate sibcall sequences
+ as needed.
+ (print_operand); Handle cases 'Q', 'p', and 'z' for TARGET_64BIT. For
+ (ouput_arg_descriptor): Do not emit argument descriptors for
+ TARGET_64BIT.
+ * pa/pa.h (TARGET_PA_11, TARGET_PA_20): Only define if not already
+ defined.
+ (TARGET_64BIT, PROMOTE_FUNCTION_RETURN): Define.
+ (FUNCTION_OK_FOR_SIBALL): Define.
+ (CPP_PA10_SPEC, CPP_PA11_SPEC, CPP_PA20_SPEC): Define.
+ (CPP_CPU_DEFAULT_SPEC, SUBTARGET_EXTRA_SPECS, EXTRA_SPECS): Likewise.
+ (CPP_SPEC): Use new spec infrastructure.
+ (BITS_PER_WORD, UNITS_PER_WORD): Handle TARGET_64BIT.
+ (STACK_BOUNDARY, FUNCTION_BOUNDARY, PIC_OFFSET_TABLE_REGNUM): Likewise.
+ (RETURN_IN_MEMORY, EXTRA_CONSTRAINT, FIRST_PARM_OFFSET): Likewise.
+ (REG_PARM_STACK_SPACE, STACK_POINTER_OFFSET): Likewise.
+ (STACK_DYNAMIC_OFFSET, FUNCTION_VALUE): Likewise.
+ (FUNCTION_ARG_PASS_BY_REFERENCE, FUNCTION_ARG_CALLEE_COPIES): Likewise.
+ (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Likewise.
+ (INITIALIZE_TRAMPOLINE, LEGITIMATE_CONSTANT_P): Likewise.
+ (CONST_OK_FOR_LETTER_P, MOVE_RATIO): Likewise.
+ (FUNCTION_ARG); Call out to C code.
+ (FUNCTION_ARG_PARTIAL_NREGS): Likewise.
+ (MAX_BITS_PER_WORD, MAX_LONG_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Define.
+ (MIN_UNITS_PER_WORD): Likewise.
+ * pa/pa.md (cmpdi): New expander.
+ (scc patterns, movstrsi): Not available for TARGET_64BIT.
+ (64bit conditional arithmetic): New patterns.
+ (absdi2, smindi3, umindi3, smaxdi3, umaxdi3): New patterns.
+ (movsicc): Not available if modes on all the operands to not match.
+ (movdicc): New expander and associated patterns.
+ (64bit branches): New patterns.
+ (pre_load, post_store): Generate appropriate code for TARGET_64BIT.
+ (pre_ldd, post_std): New patterns.
+ (64bit addil, load low part): New patterns.
+ (special movsf constant): Not available for TARGET_64BIT.
+ (movsf, movdf expanders): Force constants into memory.
+ (32bit movdf/movdi patterns): Disable for TARGET_64BIT.
+ (64bit movdf/movdi patterns): New patterns.
+ (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New patterns
+ for TARGET_64BIT.
+ (extendqidi2, extendhidi2, extendsidi2): Similarly.
+ (adddi3 expander): Allow "arith_operand" for second input.
+ (32bit adddi3, subdi3, uaddcm): Disable for TARGET_64BIT.
+ (64bit adddi3, subsi3, uaddcm): New patterns for TARGET_64BIT.
+ (mulsi3 expander): Revamp slightly so it supports TARGET_64BIT too.
+ (muldi3): New expander for TARGET_64BIT.
+ (divsi3, udivsi3, modsi3, umodsi3): Fourth operand must be (reg:SI 2)
+ for TARGET_64BIT.
+ (32bit anddi3, iordi3, xordi3, andcm, negdi2, uaddcm): Disable
+ patterns for TARGET_64BIT.
+ (64bit anddi3, iordi3, xordi3, andcm, negdi2, uaddcm, shadd): New
+ patterns for TARGET_64BIT.
+ (64bit bit insertion/extractions): New patterns for TARGET_64BIT.
+ (64bit shifts/rotates): New patterns/expanders for TARGET_64BIT.
+ (sibcall_epilogue): New expander.
+ (casesi): Tweak for TARGET_64BIT.
+ (call expanders): Set & use the outgoing argument pointer. Use the
+ 64bit call patterns as needed. Add additional arg to output_call.
+ (call_internal_reg_64bit, call_value_internal_reg_64bit): New pattern.
+ (sibcall, sibcall_internal_symref): New expanders.
+ (sibcall_value, sibcall_value_internal_symref
+ (interspace_jump): Turn into an expander + matching patterns.
+ (canonicalize_funcptr_for_compare): Not needed for TARGET_64BIT.
+ * pa/pa64-regs.h: Eliminate trigraph sequences.
+ * pa/pa64-start.h (TARGET_PA_20): Fix typo.
+
+2000-04-11 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cppexp.c, cpphash.c, cpphash.h, cpplex.c, cpplib.c,
+ cpplib.h, cppmain.c, fix-header.c, scan-decls.c: Replace
+ cpp_token with cpp_ttype everywhere.
+ * cpperror.c, cpphash.c, cpplex.c, cpplib.c, scan-decls.c:
+ Replace cpp_buf_line_and_col with CPP_BUF_LINE and/or
+ CPP_BUF_COL. Line and column numbers are unsigned int, not
+ long.
+ * cpplex.c (cpp_buf_line_and_col): Delete.
+ * cpplib.h (struct cpp_buffer, struct cpp_reader): Change
+ 'long lineno' to 'unsigned int lineno'.
+ (CPP_BUF_LINE, CPP_BUF_COL): New macros.
+
+2000-04-11 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * extend.texi: ISO C99 is not a draft anymore.
+ * invoke.texi: ISO C++ is not a draft anymore.
+ * cpp.texi: __cplusplus is required by the ISO standard.
+
+ * extend.texi (-fthis-is-variable): Undocument.
+ * flags.h (warn_template_debugging): Remove declaration.
+ * gcc.1 (-fall-virtual, -fenum-int-equiv, -fthis-is-variable,
+ -Wenum-clash, -Wtemplate-debugging): Undocument.
+
+2000-04-10 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/arm.h (HOST_INT): New macro: Declare a HOST_WIDE_INT
+ integer.
+ (HOST_UINT): New macro: Declare an unsigned HOST_WIDE_INT
+ integer.
+ (ARM_SIGN_EXTEND): Use HOST_UINT.
+ (STRIP_NAME_ENCODING): Prevent warnings about redefinitions.
+ (ASM_OUTPUT_LABELREF): Prevent warnings about redefinitions.
+ (INCOMING_RETURN_ADDR_RTX): Only define if Dwarf2 is supported.
+ (DWARF_FRAME_RETURN_COLUMN): Only define if Dwarf2 is supported.
+
+ * config/arm/arm.c: (const_ok_for_arm): Use HOST_UINT.
+ (arm_gen_constant): Use HOST_UINT.
+ (arm_canonicalize_constant): Use HOST_UINT.
+ (arm_reload_in_hi): Use HOST_UINT.
+ (arm_reload_out_hi): Use HOST_UINT.
+ (output_multi_immediate): Use HOST_UINT.
+ (int_log2): Use HOST_UINT.
+ (arm_poke_function_name): Use HOST_UINT.
+ (arm_output_epilogue): Use arm_volatile_func().
+ (output_thumb_prologue): Use arm_strip_name_encoding().
+
+Mon Apr 10 15:40:59 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * sbitmap.c (sbitmap_a_subset_b_p): Rework loop to avoid potential
+ of sequence point problems.
+
+2000-04-10 Nathan Sidwell <nathan@codesourcery.com>
+
+ * rtl.def (ASHIFT, ROTATE, ASHIFTRT, LSHIFTRT, ROTATERT):
+ Recomment.
+ * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Recomment.
+
+Mon Apr 10 07:21:13 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * sbitmap.h: Whitespace changes and use upper-case macro args.
+ (struct simple_bitmap_def): All sizes now unsigned.
+ (EXECUTE_IF_SET_IN_SBITMAP): Internal vars now _X instead of X_.
+ * sbitmap.c (sbitmap_alloc): N_ELMS now unsigned; also local vars.
+ (sbitmap_vector_alloc): Parms and local vars now unsigned.
+ (sbitmap_zero): Cast bzero arg to PTR.
+ (sbitmap_vector_zero, sbitmap_vector_one): Parm and Local var unsigned.
+ (sbitmap_union_of_diffs): Change loop index to unsigned and rework
+ loop to make structure clearer.
+ (sbitmap_not, sbitmap_difference, sbitmap_a_and_b): Likewise.
+ (sbitmap_a_or_b, sbitmap_a_subset_b_p, sbitmap_a_or_b_and_c): Likewise.
+ (sbitmap_a_and_b_or_c): Likewise.
+ (sbitmap_intersection_of_succs): Minor cleanups.
+ (sbitmap_intersection_of_preds, sbitmap_union_of_succs): Likewise.
+ (sbitmap_union_of_preds): Likewise.
+ (sbitmap_first_set_bit, dump_sbitmap): Local variables now unsigned.
+ (debug_sbitmap): New function.
+
+ * c-convert.c (convert): Handle REFERENCE_TYPE like POINTER_TYPE.
+ * c-typeck.c (convert_for_assignment): Likewise.
+
+ * expmed.c (init_expmed): Don't free objects we make.
+ * emit-rtl.c (gen_rtx_CONST_INT, init_emit_once): Minor cleanups.
+
+ * expr.c (get_inner_reference): Correct some WITH_RECORD_EXPR cases.
+ (expand_expr, case CONVERT_EXPR): Pass proper alignment to store_field.
+
+ * gcse.c (expr_hash_table_size): Now unsigned.
+ (compute_ae_gen): Local variable `i' now unsigned.
+ (compute_ae_kill, pre_insert_copies, pre_delete, pre_gcse): Likewise.
+ (compute_transout, hoist_code): Likewise.
+ (compute_local_properties): Likewise, also hash_table_size.
+ (alloc_expr_hash_table): N_INSNS now unsigned.
+ (delete_null_pointer_checks): Mark arg F as unused.
+
+ * regrename.c: Minor cleanups, including chang some variables
+ to unsigned int.
+
+2000-04-10 Neil Booth <NeilB@earthling.net>
+
+ * cpplex.c (skip_block_comment): Use pointer arithmetic rather
+ than GETC ().
+ * cpphash.h: (CPP_BUMP_BUFFER_LINE_CUR, CPP_BUMP_LINE_CUR): New.
+
+2000-04-10 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * invoke.texi (-fno-gnu-keywords): Remove classof, headof,
+ __classof__, and __headof__ from the list of gnu keywords.
+ (-ansi): Remove -foperator-names from list of implied options.
+ Do not call it ANSI C++.
+ (-foperator-names): Document as -fno-operator-names.
+
+2000-04-09 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpphash.c (timestamp): Delete.
+ (del_HASHNODE): If type is T_MCONST, free value.cpval.
+ (special_symbol): Remove unnecessary braces. Remove
+ T_VERSION. Treat T_STDC like T_CONST unless
+ STDC_0_IN_SYSTEM_HEADERS. Render both __DATE__ and __TIME__
+ when one is encountered, then convert them into T_MCONST
+ nodes.
+ * cppinit.c (builtin_array): version_string is T_MCONST.
+ __STDC__ has a "1" in its cpval. Don't have a terminator
+ entry. Clean up which entries are dumped.
+ (initialize_builtins): Only __STDC__ gets the special
+ -traditional treatment. Count the length of builtin_array.
+ Render version_string here.
+ * cpphash.h: Remove T_VERSION. Add T_MCONST.
+ * cpplib.h (struct cpp_reader): Remove timebuf.
+
+2000-04-09 Richard Henderson <rth@cygnus.com>
+
+ * genrecog.c (pred): Update comparison_operator for the unordered
+ operators.
+
+ * config/i386/i386.c (no_comparison_operator): Disallow unordered
+ operators.
+ (fcmov_comparison_operator): Allow UNORDERED/ORDERED.
+ (uno_comparison_operator): New.
+ (put_condition_code): Handle UNORDERED/ORDERED.
+ (unsigned_comparison): Likewise.
+ (ix86_fp_compare_mode): Broken out of ix86_expand_fp_compare.
+ (ix86_use_fcomi_compare, ix86_prepare_fp_compare_args): Likewise.
+ (ix86_expand_fp_compare): Use them. Take scratch as argument,
+ update all callers. Handle all 8 unordered operators.
+ (ix86_expand_setcc): Lose the unordered argument, update all callers.
+ (ix86_expand_branch): Likewise. Don't fully expand fp branches.
+ * config/i386/i386.h (PREDICATE_CODES): Update.
+ * config/i386/i386-protos.h (ix86_expand_fp_compare): Declare.
+ (ix86_expand_branch, ix86_expand_setcc): Update.
+ * config/i386/i386.md (sunordered, sordered): New.
+ (suneq, sunge, sungt, sunle, sunlt, sltgt): New.
+ (bunordered, bordered): New.
+ (buneq, bunge, bungt, bunle, bunlt, bltgt): New.
+ (*fp_jcc_1, *fp_jcc_2, *fp_jcc_3, *fp_jcc_4): New.
+ (*fp_jcc_5, *fp_jcc_6, and splitters): New.
+
+2000-04-09 Philip Blundell <philb@gnu.org>
+
+ * config/arm/arm.h (ARM_NAME_ENCODING_LENGTHS): Strip `*' too.
+
+Sun Apr 9 15:16:14 EDT 2000 John Wehle (john@feith.com)
+
+ * i386.md (fix_truncsfhi2, fix_truncdfhi2,
+ fix_truncxfhi2): New patterns.
+ * i386.c (output_fix_trunc): Handle converting to HImode.
+
+2000-04-08 Alex Samuel <samuel@codesourcery.com>
+
+ * ssa.c (convert_to_ssa): Eliminate dead code when calling
+ life_analysis.
+ (convert_from_ssa): Call compute_bb_for_insn before life_analysis.
+ (for_each_successor_phi): Change parameter to basic_block.
+ (coalesce_regs_in_successor_phi_nodes): Likewise.
+ (coalesce_regs_in_copies): Likewise.
+ (compute_coalesced_reg_partition): Use basic_block instead of index.
+ * rtl.h (convert_to_ssa): Delete.
+ (convert_from_ssa): Likewise.
+ (successor_phi_fn): Likewise.
+ (for_each_successor_phi): Likewise.
+ (in_ssa_form): Likewise.
+ * basic-block.h (convert_to_ssa): Moved from rtl.h.
+ (convert_from_ssa): Likewise.
+ (successor_phi_fn): Likewise.
+ (in_ssa_form): Likewise.
+ (for_each_successor_phi): Likewise. Change parameter to basic_block.
+ * flow.c (calculate_global_regs_live): Pass a basic_block to
+ for_each_successor_phi.
+
+2000-04-08 Richard Henderson <rth@cygnus.com>
+
+ * flow.c (mark_used_reg): Use reg_set_p to determine if a register
+ was modified in the current insn.
+
2000-04-08 Richard Earnshaw (rearnsha@arm.com)
* arm/thumb.md: Delete.
2000-03-15 Geoff Keating <geoffk@cygnus.com>
- See the ChangeLog on the branch for more details.
+ Merge changes from newppc-branch onto trunk.
+
+ 2000-03-15 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (toc_hash_table): Update for new hash table functions.
+ (toc_hash_function): Likewise.
+ (toc_hash_eq): Likewise.
+ (toc_hash_mark_entry): Likewise.
+ (toc_hash_mark_table): Likewise.
+ (output_toc): Likewise.
+ (rs6000_add_gc_roots): Likewise.
+
+ 2000-03-15 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+
+ * t-aix43 (AR_FOR_TARGET): Deleted. Moved `-X32_64'...
+ (AR_FLAGS_FOR_TARGET): here. New macro.
+
+ 2000-03-05 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config/rs6000/rs6000.c (rs6000_fpmem_offset, rs6000_fpmem_size,
+ fpmem_operand) Delete.
+ (xer_operand) New.
+ (rs6000_reg_names, alt_reg_names): Change fpmem to xer.
+ (machine_function): Remove fpmem_size, fpmem_offset, save_toc_p.
+ (rs6000_save_machine_status, rs6000_restore_machine_status,
+ rs6000_init_expanders, rs6000_stack_info, debug_stack_info): Remove
+ references to above variables.
+ (gpc_reg_operand): Use XER_REGNO_P instead of FPMEM_REGNO_P.
+ * config/rs6000/rs6000.h (REG_ALLOC_ORDER, REGISTER_NAMES,
+ DEBUG_REGISTER_NAMES): Chagne fpmem to xer.
+ (FPMEM_REGNO_P, FPMEM_REGNUM): Delete.
+ (XER_REGNO_P, XER_REGNO): New.
+ (rs6000_stack): Remove fpmem_p, fpmem_offset, fpmem_size.
+ (PREDICATE_CODES): Change fpmem_operand to xer_operand.
+ (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK): Change FPMEM_REGNO_P to
+ XER_REGNO_P.
+ (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS,
+ REG_CLASS_FROM_LETTER, CLASS_MAX_NREGS): Change FPMEM_REGS to XER_REGS, and remove FLOAT_OR_FPMEM_REGS.
+ (CLASS_CANNOT_CHANGE_SIZE): Change to FLOAT_REGS.
- * configure.in: Merge in changes from newppc-branch.
- * configure: Regenerate.
- * config/rs6000/*: Merge in changes from newppc-branch.
- Also correct copyright notices.
+ 2000-02-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * aix.h (FP_SAVE_INLINE, ASM_OUTPUT_INTERNAL_LABEL_PREFIX,
+ TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Move here...
+ * rs6000.h: from here.
+
+ * rs6000-protos.h (rs6000_select_section): Provide prototype.
+ (rs6000_select_rtx_section): Likewise.
+ (rs6000_encode_section_info): Likewise.
+ (sdata_section): Likewise.
+ (sdata2_section): Likewise.
+ (sbss_section): Likewise.
+ * sysv4.h (rs6000_select_section): Delete prototype.
+ (rs6000_select_rtx_section): Likewise.
+ (rs6000_encode_section_info): Likewise.
+ (sdata_section): Likewise.
+ (sdata2_section): Likewise.
+ (sbss_section): Likewise.
+ (REG_SAVE_AREA): Delete definition duplicated in rs6000.h.
+
+ * sysv4.h: Delete various unnecessary #undef's and put a comment
+ on the remaining ones.
+ Change various comments according to coding standard.
+
+ 2000-02-29 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config/rs6000/rs6000.h (MQ_REGNO, CR0_REGNO, CR1_REGNO, CR2_REGNO,
+ CR3_REGNO, CR4_REGNO, MAX_CR_REGNO): Define.
+ (CR0_REGNO_P) Remove.
+ * config/rs6000/rs6000.c (gpc_reg_operand, and64_operand, and_operand,
+ setup_incoming_varargs, mtcrf_operation, print_operand,
+ rs6000_stack_info, rs6000_emit_prologue, rs6000_emit_epilogue):
+ Use the above macros.
+
+ 2000-02-24 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config/rs6000/rs6000.md: Added a new alternative for each
+ pattern that had a 'x' alternative but no 'y' alternative.
+ Added a new split for each of the above patterns.
+
+ 2000-02-18 Geoff Keating <geoffk@cygnus.com>
+
+ * aix41.h (ASM_CPU_SPEC): Delete.
+ (CPP_CPU_SPEC): Delete.
+
+ * aix.h (RS6000_OUTPUT_BASENAME): Define.
+ (ASM_OUTPUT_LABEL): Define.
+ (ASM_GLOBALIZE_LABEL): Define.
+ (STRIP_NAME_ENCODING): Define.
+ * rs6000.h (RS6000_OUTPUT_BASENAME): Don't define.
+ (STRIP_NAME_ENCODING): Don't define.
+ (ASM_OUTPUT_LABEL): Don't define.
+ (ASM_GLOBALIZE_LABEL): Don't define.
+ * sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use assemble_name to output
+ names, and ASM_OUTPUT_LABEL to output labels, rather than
+ asm_fprintf.
+ (ASM_OUTPUT_LABEL): Define.
+ (ASM_OUTPUT_INT): Use assemble_name.
+ (ASM_OUTPUT_DWARF_ADDR): Use assemble_name.
+ (STRIP_NAME_ENCODING): Don't undefine first.
+ (RS6000_OUTPUT_BASENAME): Make equivalent to assemble_name for
+ ELF.
+ (ASM_OUTPUT_LABELREF): Don't prepend underscores to labels
+ specified with 'asm' even with -fleading-underscore.
+ * rs6000.c (print_operand): Use assemble_name when !TARGET_AIX.
+ (output_epilog): Likewise.
+ (output_toc): Likewise.
+ * tramp.asm: Handle -fleading-underscore correctly.
+
+ * rs6000.md (builtin_setjmp_receiver): Also run for -fPIC and
+ -mminimal-toc.
+ (nonlocal_goto_receiver): Delete.
+ * rs6000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Delete.
+
+ * rs6000.h (ASM_OUTPUT_DEF): Don't define.
+ (SET_ASM_OP): Define.
+ * sysv4.h (ASM_OUTPUT_DEF): Don't undefine.
+
+ * rs6000.h (ASM_OUTPUT_ADDR_VEC_ELT): Don't define.
+ (ASM_LONG): Define.
+
+ * rs6000.c (rs6000_dll_import_ref): Delete, not used.
+ * rs6000-protos.h (rs6000_dll_import_ref): Delete.
+
+ * rs6000.h: Add 'u' to more constants.
+
+ 2000-02-18 David Edelsohn <edelsohn@gnu.org>
+
+ * rs6000.md (mfcr+shift): Delete PowerPC64 version.
+
+ 2000-02-15 David Edelsohn <edelsohn@gnu.org>
+
+ * rs6000.c (reg_or_u_cint_operand): New function.
+ (logical_operand): Handle 64-bit hosts.
+ (logical_u_operand): New function.
+ (non_logical_cint_operand): Handle 64-bit hosts.
+ (non_logical_u_cint_operand): New function.
+ * rs6000.h (DATA_SECTION_ASM_OP): Add tab.
+ (PREDICATE_CODES): Define new functions.
+ * rs6000-protos.h: Declare new functions.
+ * rs6000.md (iordi3, xordi3): Constant int must be unsigned 32-bits.
+ (movdi_64): Bracket code intended for 64-bit hosts. Create
+ CONST_DOUBLE for 32-bit values.
+ (scc insns): Generate DImode compares.
+ (mfcr insns): Create DImode versions.
+ (sge matchers): New patterns.
+
+ 2000-02-15 Gabriel Paubert <paubert@iram.es>
+
+ * rs6000.md: Correct instructions length attributes and
+ constraints on unsigned compare instructions.
+ (*ne0): Disable for PowerPC64.
+
+ 2000-02-11 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (output_function_profiler): Use .long for a 32-bit
+ quantity, fix profile1.C test failure under -fPIC.
+
+ * rs6000.c: Add 'u' to many constants to suppress warnings.
+ (constant_pool_expr_1): Make static.
+ (rs6000_emit_eh_toc_restore): Remove unused 'r2'.
+ * rs6000.h: Add 'u' to many constants to suppress warnings.
+
+ * rs6000.c (rs6000_emit_load_toc_table): Use LCTOC..1 under AIX
+ for the start of the TOC, instead of LCTOC..0.
+ * aix.h (toc_section): Use LCTOC..1 under AIX for the start
+ of the TOC.
+ * rs6000.md (load_toc_aix_si): Use LCTOC..1.
+ (load_toc_aix_di): Use LCTOC..1.
+
+ * rs6000.h (LEGITIMIZE_ADDRESS): Turn into a function.
+ * rs6000.c (rs6000_legitimize_address): New function from
+ LEGITIMIZE_ADDRESS. Only use create_TOC_reference on
+ symbols in the constant pool that really are TOC references.
+ (print_operand_address): For ELF, write TOC offsets under
+ -fPIC as subtractions in the insn.
+ (output_toc): For ELF, define symbols in TOC as normal labels,
+ to match RTL.
+ (create_TOC_reference): Use gen_rtx_PLUS rather than gen_rtx.
+ * rs6000-protos.h (rs6000_legitimize_address): Prototype.
+ (create_TOC_reference): Prototype only when RTX_CODE is defined.
+ * rs6000.md (movsi): Only use create_TOC_reference on
+ symbols in the constant pool that really are TOC references.
+
+ * rs6000.h (MACHINE_DEPENDENT_REORG): Don't define.
+ * rs6000.c (rs6000_reorg): Delete.
+ * rs6000-protos.h (rs6000_reorg): Delete.
+
+ 2000-02-09 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.h (INCOMING_RETURN_ADDR_RTX): New macro.
+
+ * aix.h (SETUP_FRAME_ADDRESSES): Define.
+ * rs6000.c [TARGET_AIX] (insn_after_throw): New static variable.
+ [TARGET_AIX] (rs6000_aix_emit_builtin_unwind_init): New function.
+ [TARGET_AIX] (rs6000_emit_eh_toc_restore): New function.
+ * rs6000-protos.h: Prototype rs6000_emit_eh_toc_restore,
+ rs6000_aix_emit_builtin_unwind_init.
+ * rs6000.md (eh_epilogue) [TARGET_AIX]: Call
+ rs6000_emit_eh_toc_restore on AIX.
+ (return_eh_si): Use r2.
+ (return_eh_di): Use r2.
+
+ * aix43.h: Turn on HAS_INIT_SECTION and LD_INIT_SWITCH,
+ since we're breaking binary compatibility anyway.
+
+ 2000-02-09 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config/rs6000/rs6000-protos.h: (get_TOC_alias_set, uses_TOC,
+ constant_pool_expr_p): Declare them.
+ (constant_pool_expr_p): Declare it.
+ * config/rs6000/rs6000.c (toc_label_name): Define.
+ (rs6000_override_options): Set toc_label_name.
+ (input_operand): Allow any TOC_RELATIVE_EXPR_P.
+ (get_TOC_alias_set, constant_pool_expr_p, constant_pool_expr_1,
+ uses_TOC): New functions.
+ (print_operand): Delete old '*' case.
+ (print_operand_address): Use LEGITIMATE_CONSTANT_POOL_ADDRESS_P,
+ and strip off rtl for TOC before calling output_addr_const.
+ (rs6000_emit_load_toc_table): Use toc_label_name.
+ * config/rs6000/rs6000.h (TARGET_SWITCHES): Make msched-prolog
+ the default.
+ (LEGITIMATE_CONSTANT_POOL_BASE_P): Delete.
+ (CONSTANT_POOL_EXPR_P, TOC_RELATIVE_EXPR_P): New macros.
+ (LEGITIMATE_CONSTANT_POOL_ADDRESS_P): Use CONSTANT_POOL_EXPR_P.
+ (LEGITIMIZE_ADDRESS, LEGITIMIZE_RELOAD_ADDRESS): Turn symbol_refs
+ into explicit TOC_REGISTER offsets.
+ (TOC_REGISTER): New macro.
+ * config/rs6000/rs6000.md (movsi, movdi): Emit rtl under
+ TARGET_TOC to reference TOC_REGISTER.
+ (load_toc_v4_PIC_1b): Add 4 to offset for toc reload.
+ * config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Call
+ uses_TOC before emitting label references.
+
+ 2000-02-05 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (stack_tie): Fix warning.
+
+ * eabi-ctors.c: Use 'asm' names for the start/end variables,
+ to handle -fleading-underscore.
+ * sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use asm_fprintf and %U.
+ (USER_LABEL_PREFIX): New macro.
+ (ASM_OUTPUT_INTERNAL_LABEL_PREFIX): Use asm_fprintf and %L.
+ (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
+ * t-ppccomm (MULTILIB_MATCHES_SYSV): Note that call-sysv and
+ call-linux can use the same multilibs.
+ * t-ppcgas (MULTILIB_OPTIONS): Don't need to have separate call-sysv
+ and call-linux multilibs. Do multilib with -fleading-underscore.
+ (MULTILIB_DIRNAMES): Follow MULTILIB_OPTIONS change.
+ (MULTILIB_EXCEPTIONS): Remove call-linux exceptions. Add restrictions
+ to call-aix.
+
+ * sysv4.h (CPP_SYSV_SPEC): Define _SOFT_FLOAT for all those CPUs that
+ have MASK_SOFT_FLOAT set.
+ (CPP_FLOAT_DEFAULT_SPEC): New macro.
+ (SUBTARGET_EXTRA_SPECS): Set `cpp_float_default' to the value of
+ CPP_FLOAT_DEFAULT_SPEC.
+
+ * rs6000.c (ccr_bit): Add some consistency checks and a variable 'reg'.
+ * rs6000.md: Whitespace change.
+ * sysv4.h (LINK_TARGET_SPEC): Whitespace change.
+ * sysv4le.h (LINK_TARGET_SPEC): Whitespace change.
+
+ 2000-02-05 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (eh_epilogue): New expander.
+ (eh_reg_restore): New expand/split/insn combination.
+ (return_eh_si): New insn.
+ (return_eh_di): New insn.
+
+ * eabi-ci.asm: Put a label at the start of the .eh_frame section.
+ * eabi-cn.asm: Put a zero at the end of the .eh_frame section.
+ * eabi-ctors.c (__do_global_ctors): Register this object's
+ frame. Clean up. Call atexit() after the constructors.
+ (__do_global_dtors): Deregister this object's frame. Clean up.
+ Allow for recursive calls to exit().
+ * rs6000.c (fixuplabelno): New variable.
+ * sysv4.h (ASM_OUTPUT_INT): Don't do .fixup if not
+ TARGET_RELOCATABLE, it slows down exec() under linux.
+ (ASM_OUTPUT_DWARF_ADDR): Do .fixup if TARGET_RELOCATABLE.
+
+ * aix.h (ASM_OUTPUT_DWARF_ADDR_VAR): New macro.
+ (ASM_OUTPUT_DWARF_DELTA_VAR): New macro.
+ (ASM_OUTPUT_DWARF_DELTA2): New macro.
+ (ASM_OUTPUT_DWARF_DELTA4): New macro.
+ (ASM_OUTPUT_DWARF_ADDR_DELTA): New macro.
+ (ASM_OUTPUT_DWARF_ADDR): New macro.
+ (ASM_OUTPUT_DWARF_DATA4): New macro.
+ (ASM_OUTPUT_DWARF_DATA2): New macro.
+ (ASM_OUTPUT_DWARF_OFFSET4): New macro.
+ (ASM_OUTPUT_DWARF_OFFSET): New macro.
+ (UNALIGNED_INT_ASM_OP): New macro, fake definition.
+
+ 2000-02-03 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (rs6000_sr_alias_set): New variable.
+ (rs6000_override_options): Initialise rs6000_sr_alias_set.
+ (rs6000_emit_stack_tie): New function.
+ (rs6000_emit_allocate_stack): Specify RTX_FRAME_RELATED_P
+ in a way that dwarf2out can understand.
+ (rs6000_frame_related): New function.
+ (rs6000_emit_prologue): Use rs6000_sr_alias_set. Specify
+ RTX_FRAME_RELATED_P in a way that dwarf2out can understand.
+ Use rs6000_emit_stack_tie when needed.
+ (rs6000_emit_epilogue): Use rs6000_sr_alias_set. Don't set
+ RTX_FRAME_RELATED_P. Use rs6000_emit_stack_tie when needed.
+ * rs6000.md (stack_tie): New insn.
+ (return_internal_si): Allow return value to be in the count
+ register.
+ (return_internal_di): Likewise.
+
+ * rs6000.c (output_mi_thunk): Remove unused variable `sp'.
+
+ 2000-02-03 Geoff Keating <geoffk@cygnus.com>
+
+ * sysv4.h (LOCAL_LABEL_PREFIX): Define, for the use of dbxelf.h.
+
+ 2000-01-31 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): New macro.
+
+ * rs6000.md (stmw): Use the right POWER opcode.
+ (lmw): Likewise.
+
+ 2000-01-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * rs6000-protos.h: New file.
+
+ * rs6000.c: Include tm_p.h. Fix compile time warnings.
+
+ * rs6000.h: Move prototypes to rs6000-protos.h. Fix compile time
+ warnings.
+
+ * sysv4.h: Likewise.
+
+ 2000-01-28 Geoff Keating <geoffk@cygnus.com>
+
+ * ../../configure.in: Delete powerpcle-*-winnt*
+ and powerpcle-*-pe|powerpcle-*-cygwin*.
+ * ../../configure: Regenerated.
+ * cygwin.h: Delete.
+ * rs6000.h (OBJECT_WINDOWS_NT): Delete.
+ (TARGET_WINDOWS_NT): Delete.
+ (ABI_NT): Delete.
+ (CALL_NT_DLLIMPORT): Delete.
+ Delete NT-specific code.
+ * rs6000.md, rs6000.c, sysv4.h: Delete NT-specific code.
+ * win-nt.h: Delete.
+ * t-winnt: Delete.
+ * nt-ci.asm: Delete.
+ * nt-cn.asm: Delete.
+ * ntstack.asm: Delete.
+
+ 2000-01-27 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * rs6000.h (SELECT_RTX_SECTION): Move to aix.h.
+ (ASM_FILE_START): Likewise.
+ (ASM_DECLARE_FUNCTION_NAME): Likewise.
+ (ASM_OUTPUT_LABELREF): Likewise.
+ (ASM_OUTPUT_SKIP): Likewise.
+ (ASM_OUTPUT_INTERNAL_LABEL): Likewise.
+ (ASM_GENERATE_INTERNAL_LABEL): Likewise.
+ (ASM_OUTPUT_CASE_LABEL): Likewise.
+ (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
+ (ASM_OUTPUT_ASCII): Likewise.
+
+ 2000-01-27 Clinton Popetz <cpopetz@cygnus.com>
+
+ * rs6000.c (rs6000_emit_load_toc_table): Use "LCG" and
+ reload_toc_labelno for non-prologue TOC reloads. Also, don't
+ increment rs6000_pic_labelno here.
+ (rs6000_emit_prologue): Pass TRUE to rs6000_emit_load_toc_table,
+ and increment rs6000_pic_labelno here.
+
+ 2000-01-24 Geoffrey Keating <geoffk@cygnus.com>
+
+ * rs6000.md (fctiwz): Use (set (reg) (unspec:DI [(fix:SI ...)]))
+ rather than (set (subreg:SI (reg)) (fix:SI ...)) so that register
+ allocation knows (reg) is dead before the insn.
+
+ 2000-01-21 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (movsi_to_cr): Correct typo in output template.
+
+ 2000-01-19 Geoffrey Keating <geoffk@cygnus.com>
+
+ * rs6000.c (rs6000_pic_labelno): Always define.
+ (rs6000_pic_func_labelno): Delete.
+ (lmw_operation): Check for a zero base register,
+ which doesn't mean what we want.
+ (stmw_operation): New function.
+ (print_operand): Define new 'l' modifier.
+ (rs6000_stack_info): We must save all 64 bits of the registers
+ if TARGET_POWERPC64.
+ (rs6000_output_load_toc_table): Delete.
+ (rs6000_emit_load_toc_table): New function.
+ (rs6000_allocate_stack_space): Delete.
+ (rs6000_emit_allocate_stack): New function.
+ (rs6000_emit_prologue): New function.
+ (output_prolog): Use rs6000_emit_prologue.
+ (rs6000_emit_epilogue): Change a few variable names to be
+ more accurate. Restore all 64 bits of the registers if
+ TARGET_POWERPC64. Only restore the FP registers which were used
+ if they are being saved/restored one-at-a-time.
+ (output_mi_thunk): Delete inefficient code generation.
+ (output_function_profiler): Don't use rs6000_output_load_toc_table.
+ * rs6000.h: Declare rs6000_emit_load_toc_table,
+ rs6000_allocate_stack_space, stmw_operation. Don't declare
+ rs6000_output_load_toc_table.
+ * rs6000.md (elf_high): Allow register 0, but discourage it
+ heavily.
+ (elf_low): Support loading into register 0.
+ (load_toc_aix_si): New pattern.
+ (load_toc_aix_di): New pattern.
+ (load_toc_v4_pic_si): New pattern.
+ (load_toc_v4_pic_di): New pattern.
+ (load_toc_v4_PIC_1): New pattern.
+ (load_toc_v4_PIC_1b): New pattern.
+ (load_toc_v4_PIC_2): New pattern.
+ (builtin_setjmp_receiver): Use rs6000_emit_load_toc_table.
+ (nonlocal_goto_receiver): Use rs6000_emit_load_toc_table.
+ (prologue): New expander.
+ (movesi_from_cr): New pattern.
+ (stmw): New pattern.
+ (save_fpregs_si): New pattern.
+ (save_fpregs_di): New pattern.
+
+ 2000-01-19 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (movsi): Don't use force_reg when no_new_pseudos.
+ (movdi): Likewise.
+ (movhi): Likewise.
+ (movqi): Likewise.
+
+ 2000-01-19 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (movsi_got): 'unspec 8' returns a SImode result,
+ at present.
+ (movsi_got_internal): Likewise.
+ (movsi_got_internal+1): Likewise.
+ (set_sp): 'unspec 7' does a SImode clobber.
+
+ 2000-01-19 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md (floatsidf2): Don't use the fpmem "register", just
+ allocate a stack temporary.
+ (floatsidf2_internal): Likewise.
+ (floatsidf2_internal+1): Likewise. Don't do bizzare hacks
+ with unspec.
+ (floatunssidf2): Don't use the fpmem "register", just
+ allocate a stack temporary.
+ (floatunssidf2_internal): Likewise.
+ (floatunssidf2_internal+1): Likewise. Don't do bizzare hacks
+ with unspec.
+ (floatsidf2_loadaddr): Delete.
+ (floatsidf2_store1): Delete.
+ (floatsidf2_store2): Delete.
+ (floatsidf2_load): Delete.
+ (fix_truncdfsi2): Don't use the fpmem "register", just
+ allocate a stack temporary.
+ (fix_truncdfsi2_internal_si): Delete.
+ (fix_truncdfsi2_internal_di): Delete.
+ (fix_truncdfsi2_internal): New insn.
+ (fix_truncdfsi2_internal+1): Don't use the fpmem "register".
+ (fix_truncdfsi2_store): Delete.
+ (fix_truncdfsi2_load): Delete.
+ (fctiwz): Produce gen_fctiwz.
+
+ 2000-01-19 Geoffrey Keating <geoffk@cygnus.com>
+
+ * eabi.h (INVOKE__main): Define.
+ * rs6000.c (rs6000_stack_info): Don't handle call to NAME__MAIN
+ specially.
+ (rs6000_emit_prologue): Likewise.
+ * rs6000.h (struct rs6000_stack): Don't keep track of whether
+ this is the main program.
+
+ 2000-01-19 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (rs6000_va_arg): Delete some unused variables.
+
+ 2000-01-19 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (rs6000_va_arg): On AIX, padding for small arguments
+ goes after the argument.
+
+ 2000-01-12 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.md: Document 'unspec' values used.
+ (epilogue): New expander.
+ (movesi_to_cr_one): New expander.
+ (movesi_to_cr and following): New pattern.
+ (lmw): New pattern.
+ (return_internal_si): New pattern.
+ (return_internal_di): New pattern.
+ (return_and_restore_fpregs_si): New pattern.
+ (return_and_restore_fpregs_di): New pattern.
+ * rs6000.h: Declare new functions.
+ * rs6000.c (rs6000_stack_info): Use current_function_is_leaf
+ rather than rs6000_calls_p.
+ (rs6000_makes_calls): Delete.
+ (lmw_operation): New function.
+ (mtcrf_operation): New function.
+ (rs6000_emit_epilogue): New function.
+ (output_epilog): Call rs6000_emit_epilogue and final if
+ !TARGET_SCHED_PROLOG, instead of writing text unconditionally.
+
+ 2000-01-12 Geoff Keating <geoffk@cygnus.com>
+
+ * aix43.h (SUBSUBTARGET_SWITCHES): Document switches.
+ * aix41.h (SUBSUBTARGET_SWITCHES): Document switches.
+ * aix.h (SUBTARGET_SWITCHES): Document switches.
+ * rs6000.h: (TARGET_SWITCHES): Don't print options twice. Make
+ sched-prolog and sched-epilog the same. Document all the
+ switches.
+ (TARGET_OPTIONS): No longer allow -mdebug-.
+
+ 2000-01-12 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.h (ASM_FILE_END): Move to aix.h.
+ (EXTRA_SECTIONS): Move to aix.h.
+ (READONLY_DATA_SECTION): Move to aix.h.
+ (EXTRA_SECTION_FUNCTIONS): Move to aix.h.
+ (SELECT_SECTION): Move to aix.h.
+ (JUMP_TABLES_IN_TEXT_SECTION): Move to aix.h.
+ (INT_REGNO_P): Use symbolic name for ARG_POINTER_REGNUM.
+ (LINK_REGISTER_REGNUM): New definition.
+ (RETURN_ADDR_RTX): Use symbolic name for LINK_REGISTER_REGNUM.
+ (SLOW_UNALIGNED_ACCESS): Define in a way suitable for both
+ AIX and SVR4.
+ * sysv4.h: Delete the code between the inclusion of rs6000.h
+ and svr4.h.
+ (DWARF_DEBUGGING_INFO): Don't define, it's defined in elfos.h.
+ (FP_ARG_MAX_REG): Move generic definition to rs6000.h.
+ (RS6000_REG_SAVE): Move generic definition to rs6000.h.
+ (RS6000_SAVE_AREA): Move generic definition to rs6000.h.
+ * rs6000.md (floatsidf2_loadaddr): The first arg here is Pmode.
+ (fix_truncdfsi2_internal): Rename to fix_truncdfsi2_internal_si.
+ (fix_truncdfsi2_internal_di): New pattern.
+ (fix_truncdfsi2_store): The second arg here is Pmode too.
+ (fix_truncdfsi2_load): The second arg here is Pmode too.
+ (tablejumpdi): Now that switch tables hold only SImode values,
+ gcc needs to know how to add them to the pc which is DImode.
+ * rs6000.c (rs6000_stack_info): Use symbolic name for
+ LINK_REGISTER_REGNUM.
+ (output_mi_thunk) [!TARGET_ELF]: Don't define sp, it's not used.
+ (output_toc): Delete unused variables s1 and s2.
+ (output_ascii): Use fputs not fprintf on a variable string.
+
+ 2000-01-07 David Edelsohn <edelsohn@gnu.org>
+
+ * rs6000.c (processor_target_table): Add power3 as alias for 630.
+ * aix43.h: Revert Aug 2 change.
+ (HAS_INIT_SECTION): Define, not visible yet.
+ (LD_INIT_SWITCH): Define, not visible yet.
+ * t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change.
+
+ 2000-01-04 Joel Sherrill (joel@OARcorp.com>
+
+ * config/rs6000/rtems.h: Include config/rtems.h.
+
+ 2000-01-04 David Edelsohn <edelsohn@gnu.org>
+
+ * rs6000.h (HANDLE_PRAGMA_PACK): Define.
+ (SLOW_UNALIGNED_ACCESS): Define.
+ (CASE_VECTOR_MODE): Always use 32-bit offsets.
+ (ASM_FILE_END): Generate 64-bit symbol in 64-bit mode.
+ (EXTRA_SECTOIN_FUNCTIONS): Indent .csect pseudo-op.
+ (toc_section): Likewise and .toc pseudo-op.
+ (ASM_DECLARE_FUNCTION): Likewise. Align text more strictly in
+ 64-bit mode.
+ (TEXT_SECTION_ASM_OP): Likewise.
+ (ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use
+ 32-bit offsets.
+
+ 1999-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/rs6000.h (TARGET_POWERPC64): Make sure
+ UNITS_PER_WORD and BITS_PER_WORD are compile time constants when
+ compiling libgcc2.
+
+ 2000-01-06 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * rs6000.h: Move more stuff from here...
+ * aix.h: to here.
+ * sysv4.h: Cleanup accordingly.
+ * netware.h: Likewise
+
+ 2000-01-05 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * rs6000.h: Continue cleanup.
+ * aix.h: Likewise.
+ * lynx.h: Likewise.
+ * netware.h: Likewise.
+ * sol2.h: Likewise.
+ * sysv4.h: Likewise.
+ * win-nt.h: Likewise.
+
+ * rs6000.h (TARGET_SWITCHES): Add descriptions.
+ (TARGET_OPTIONS): Likewise.
+
+ * sysv4.h (SUBTARGET_SWITCHES): Add descriptions.
+ (SUBTARGET_OPTIONS): Likewise.
+
+ * rs6000.md: Fix compile time warnings.
+
+ 2000-01-04 Geoff Keating <geoffk@cygnus.com>
+
+ vxworks patches from the Cygnus tree originally by
+ Michael Meissner <meissner@cygnus.com> and Vladimir Makarov
+ <vmakarov@cygnus.com>.
+ * sysv4.h (SUBTARGET_SWITCHES): Add vxworks.
+ (ENDFILE_SPEC): Likewise.
+ (LIB_VXWORKS_SPEC): New macro.
+ (STARTFILE_VXWORKS_SPEC): New macro.
+ (ENDFILE_VXWORKS_SPEC): New macro.
+ (LINK_START_VXWORKS_SPEC): New macro.
+ (LINK_OS_VXWORKS_SPEC): New macro.
+ (CPP_OS_VXWORKS_SPEC): New macro.
+ (SUBTARGET_EXTRA_SPECS): Add all the vxworks specs.
+ * vxppc.h: Rewrite to use proper configuration method.
+ * vxppcle.h: New file.
+ * ../../configure.in: Add powerpcle-wrs-vxworks*.
+ * ../../configure: Rebuilt.
+
+ 2000-01-04 Geoff Keating <geoffk@cygnus.com>
+
+ Lots of changes to rs6000.h, sysv4.h, aix.h,
+ aix31.h, aix3newas.h, aix41.h, aix43.h, beos.h,
+ with the aim that rs6000.h is the first header
+ included and the others override it.
+ * aix.h: New file.
+
+ * x-aix41-gld: Remove.
+ * x-aix43: Remove.
+ * x-aix41: Remove target-specific switches, and don't specify
+ -Wl,-bbigtoc as we don't need it any more.
+ * ../../configure.in: Use x-aix41 for ppc AIX 4.1 and above.
+ Use t-aix43 for AIX 4.3 and above.
+ * ../../configure: Regenerated.
+
+ * rs6000.h (TARGET_SWITCHES): Add some initial prolog-scheduling
+ options, that don't do anything yet.
+ (MASK_SCHED_PROLOG): New macro.
+ (MASK_SCHED_EPILOG): New macro.
+ (TARGET_SCHED_PROLOG): New macro.
+ (TARGET_SCHED_EPILOG): New macro.
+
+ 2000-01-04 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c: Correct comment, the `minimal' TOCs are actually
+ one per translation unit, not one per function.
+ (output_toc): Also do duplicate constant elimination
+ for per-translation-unit TOCs.
+
+ * rs6000.md (nonlocal_goto_receiver): Put it back as before. Add
+ a comment explaining _exactly_ when this pattern gets used.
+ (builtin_setjmp_receiver): New pattern for better clarity.
+ (init_v4_pic): Move it into a section dealing with TOC registers.
+
+ 1999-12-30 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (toc_hash_table): New variable.
+ (rs6000_hash_constant): New function.
+ (toc_hash_function): New function.
+ (toc_hash_eq): New function.
+ (toc_hash_mark_entry): New function.
+ (toc_hash_mark_table): New function.
+ (output_toc): Don't output duplicate TOC entries in
+ a single file.
+ (rs6000_add_gc_roots): Add the hash table as a GC root.
+ * t-aix43: Move AR_FOR_TARGET and CLIB here from x-aix43,
+ where they clearly shouldn't be. This may need to be fixed
+ later when there is a GNU ar for AIX.
+ * x-aix43: Don't define CLIB or AR_FOR_TARGET.
+ Don't define BOOT_LDFLAGS as it is now not necessary.
+
+ 1999-12-29 Geoff Keating <geoffk@cygnus.com>
+
+ * rs6000.c (rs6000_build_va_list): Use 'char *' rather than 'void *'
+ for va_list on AIX. Use unsigned_char_type_node rather than
+ constructing our own version on svr4.
+
+ 1999-12-17 Geoff Keating <geoffk@cygnus.com>
+
+ * tramp.asm (__trampoline_size): Delete CYGNUS LOCAL comment,
+ since patently it's not.
+
+ 1999-12-08 Geoff Keating <geoffk@cygnus.com>
+
+ * config/rs6000/rs6000.md (nonlocal_goto_receiver): Turn into
+ define_expand/define_insn pair, and handle restore of the
+ SVR4 -fpic register.
Wed Mar 15 15:43:38 2000 Jeffrey A Law (law@cygnus.com)
gcc-2.95 branch.
See ChangeLog.1 for earlier changes.
+
+