+2003-05-09 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c: Formatting.
+
+2003-05-09 Diego Novillo <dnovillo@redhat.com>
+
+ * tree-dump.c (dequeue_and_dump): Use CONSTRUCTOR_ELTS,
+ instead of TREE_OPERAND to access the operand of a
+ CONSTRUCTOR node.
+
+2003-05-09 Diego Novillo <dnovillo@redhat.com>
+
+ * tree-dump.c (dequeue_and_dump): CONSTRUCTOR nodes contain only
+ one operand.
+
+2003-05-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * toplev.h (warning_with_file_and_line): Don't declare.
+ (error_with_file_and_line): Likewise.
+ * diagnostic.c (error_with_file_and_line): Remove.
+ (warning_with_file_and_line): Likewise.
+
+2003-05-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * c-parse.in (if_stmt_locus): New object.
+ (if_prefix rule): Use it. Don't use warning_with_file_and_line.
+ (select_or_iter_stmt rule): Likewise.
+ (if_stmt_file): Remove.
+ (if_stmt_line): Likewise.
+ * jump.c: include "diagnostic.h"
+ (never_reached_warning): Don't use warning_with_file_and_line.
+ * Makefile.in (jump.o): Add dependce on diagnostic.h
+
+2003-05-09 Alan Modra <amodra@bigpond.net.au>
+
+ * expr.c (move_block_from_reg): Remove "size" parm. Localize vars.
+ Move code handling pieces not larger than a word to..
+ * function.c (assign_parms): ..here, but use change_address instead
+ of adjust_address and operand_subword, and expand_binop instead of
+ expand_shift. Adjust calls to move_block_from_reg.
+ * expr.h (move_block_from_reg): Update declaration.
+ (copy_blkmode_from_reg): Formatting.
+ * Makefile.in (function.o): Add $(OPTABS_H) to deps.
+ * config/alpha/alpha.c (alpha_setup_incoming_varargs): Adjust
+ move_block_from_reg calls.
+ * config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
+ * config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
+ * config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
+ * config/m88k/m88k.c (m88k_builtin_saveregsk): Likewise.
+ * config/mips/mips.c (mips_setup_incoming_varargs): Likewise.
+ * config/pa/pa.c (hppa_builtin_saveregs): Likewise.
+ * config/romp/romp.h (SETUP_INCOMING_VARARGS): Likewise.
+ * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
+ * config/sh/sh.c (sh_builtin_saveregs): Likewise.
+
+2003-05-08 DJ Delorie <dj@redhat.com>
+
+ * config/stormy16/stormy16.c (xstormy16_expand_builtin_va_arg): Fix
+ to handle arguments for which MUST_PASS_IN_STACK is true (e.g.,
+ variable-sized types).
+ (xstormy16_function_arg): New. Pass them that way too.
+ * config/stormy16/stormy16-protos.h (xstormy16_function_arg): New.
+ * config/stormy16/stormy16.h (FUNCTION_ARG): Call it.
+
+2003-05-08 Aldy Hernandez <aldyh@redhat.com>
+
+ * mklibgcc.in: Use mkinstalldirs when installing multilib
+ directories.
+
+2003-05-08 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * sh.c (gen_block_redirect, split_branches): Use CODE_FOR_jump_compact
+ instead of CODE_FOR_jump
+
+2003-05-08 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * objc/objc-act.c (error_with_ivar): Don't use
+ error_with_file_and_line.
+ (warn_with_method): Don't use warning_with_file_and_line.
+
+2003-05-08 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * stmt.c (emit_locus): New macro.
+ (emit_filename): Remove.
+ (emit_lineno): Likewise.
+ (struct stmt_status): Replace members x_emit_filename and
+ x_emit_lineno with x_emit_locus.
+ (set_file_and_line_for_stmt): Adjust.
+ (expand_expr_stmt_value): Don't use warning_with_file_and_line.
+ (warn_if_unused_value): Likewise.
+ (check_seenlabel): Likewise.
+
+2003-05-08 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * c-decl.c (define_label): Tidy. Don't use any of
+ error_with_file_and_line or warning_with_file_and_file.
+ (pending_xref_error): Likewise.
+ (store_parm_decls): Likewise.
+ (current_function_prototype_locus): New object. Package from
+ current_function_prototype_file and current_function_prototype_line.
+ (start_function): Use it.
+ (current_function_prototype_file): Remove.
+ (current_function_prototype_line): Remove;
+
+2003-05-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (readonly_data_expr): New function.
+ (expand_builtin_memmove): Optimize any rodata source, not just
+ strings.
+
+2003-05-07 David Mosberger <davidm@hpl.hp.com>
+
+ * unwind-libunwind.c (_Unwind_FindEnclosingFunction): New.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.c (ix86_split_long_move): Fix base register
+ mode for XFmode splits for TARGET_64BIT.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ * sched-ebb.c (schedule_ebb): Supply the correct starting
+ block number to save_line_notes.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ * toplev.c (enum dump_file_index): Swap DFI_ce3, DFI_bbro.
+ (dump_file): Likewise.
+
+2003-05-07 David Mosberger <davidm@hpl.hp.com>
+
+ * config/ia64/crtbegin.asm (__do_jv_register_classes): Don't
+ forget to preserve gp.
+ * config/ia64/crtend.asm (__do_global_ctors_au): Ditto.
+
+ * config/ia64/crtbegin.asm (__do_jv_register_classes): Add missing
+ .prologue directive.
+ Use .skip instead of data8 for .bss section to make Intel
+ Assembler (ias) happy. Minor whitespace fixups. Make "nop 0"
+ explicit in the .mib bundles and remove the unnecessary stop
+ bits. Replace local labels with normal labels, to make ias
+ happy. Don't register __do_global_ctors_aux here, do it in
+ crtend.asm instead.
+
+ * config/ia64/crtend.asm [HAVE_INIT_FINI_ARRAY]: Register
+ __do_global_ctors_aux in .init_array section instead of
+ declaring it as a hidden global. Replace local labels with
+ ordinary labels to make ias happy.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ PR c++/10570
+ * except.c: Revert 04-01 and 04-02 forced-unwind changes.
+ * flags.h, toplev.c, doc/invoke.texi: Likewise.
+
+ * unwind-dw2.c (_Unwind_GetCFA): Fix ptr->int conversion warning.
+ * unwind.inc (_Unwind_DeleteException): Check for null
+ exception_cleanup.
+
+ * unwind-sjlj.c (_Unwind_SjLj_Resume_or_Rethrow): New.
+ * unwind.inc (_Unwind_Resume_or_Rethrow): New.
+ * unwind.h: Declare them.
+ * libgcc-std.ver (GCC_3.3): Export them.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ * unwind-dw2.c (_Unwind_GetCFA): Cast pointer to _Unwind_Ptr,
+ not _Unwind_Word.
+
+2003-05-07 Zack Weinberg <zack@codesourcery.com>
+
+ * stmt.c (force_label_rtx): New function, based on logic
+ formerly found in expand_expr.
+ * expr.h: Prototype it.
+ * expr.c (expand_expr <LABEL_DECL>): Use force_label_rtx if
+ appropriate.
+ * varasm.c (decode_addr_const <LABEL_DECL>): Use force_label_rtx.
+
+ * print-tree.c (debug_tree): Free the table after we're done
+ with it. Use putc.
+
+2003-05-07 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.h: Reverse arguments for __ev_subfw.
+ Unreverse arguments for __ev_subw.
+
+ * config/rs6000/spe.md (evsubfw): Reverse arguments of assembly.
+
+2003-05-07 Nick Clifton <nickc@redhat.com>
+
+ * config/stormy16/stormy-abi: Update to include
+ R_XSTORMY16_FPTR16, R_XSTORMY16_LO16, R_XSTORMY16_HI16 and
+ R_XSTORMY16_12 relocs.
+
+2003-05-07 Alan Modra <amodra@bigpond.net.au>
+
+ * function.c (assign_parms): Correct reversed reg_parm_stack_space
+ test. Add partial in-regs size to stack_args_size.
+
+2003-05-07 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * doc/invoke.texi (Warning Options): Mark -Wmissing-declarations
+ as a C only option.
+
+2003-05-07 Nathan Sidwell <nathan@codesourcery.com>
+
+ * gcov-io.h (GCOV_LOCKED): New #define.
+ (GCOV_LINKAGE): Make sure it is #defined.
+ (gcov_write_string, gcov_write_tag, gcov_write_length,
+ gcov_read_string, gcov_time): Poison in libgcov.
+ (gcov_seek_end): Remove.
+ (gcov_write_tag_length, gcov_sync, gcov_rewrite): New.
+ (GCOV_TAG_FUNCTION_LENGTH, GCOV_TAG_BLOCKS_LENGTH,
+ GCOV_TAG_ARCS_LENGTH, GCOV_TAG_COUNTER_LENGTH,
+ GCOV_TAG_SUMMARY_LENGTH): New #defines.
+ (gcov_write_tag, gcov_write_length): Not in libgcov.
+ * gcov-io.c (gcov_open): Use GCOV_LOCKED.
+ (gcov_write_tag, gcov_write_length): Not in libgcov.
+ (gcov_write_tag_length): New.
+ (gcov_write_summary): Use gcov_write_tag_length.
+ * libgcov.c: Always #include gcov-io.h.
+ (IN_LIBGCOV): -1 for inhibit_libc, +1 otherwise.
+ (GCOV_LINKAGE): Define to nothing for L_gcov.
+ (gcov_exit): Replace gcov_write_tag, gcov_write_length with
+ gcov_write_tag_length. Use gcov_rewrite & gcov_seek.
+ * gcov.c (read_graph_file): Replace gcov_seek by gcov_sync.
+ (read_count_file): Likewise.
+ * gcov-dump.c (dump_file): Likewise.
+ * coverag.c (read_counts_file): Likewise.
+
+2003-05-06 Mark Mitchell <mark@codesourcery.com>
+
+ PR other/10658
+ * gcc.c (process_command): Update copyright date.
+
+2003-05-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * doc/install.texi (mips-*-*): Add note about libstdc++.
+
+2003-05-06 DJ Delorie <dj@redhat.com>
+
+ * config/stormy16/stormy16.c (xstormy16_function_profiler): New.
+ * config/stormy16/stormy16.h (FUNCTION_PROFILER): Call it.
+ * config/stormy16/stormy16-protos.h (xstormy16_function_profiler): New.
+
+2003-05-06 <neil@cat.daikokuya.co.uk>
+
+ * c-opts.c (COMMAND_LINE_OPTIONS): Reject -Wmissing-prototypes
+ and -Wstrict-prototypes if C++.
+
+2003-05-06 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/linuxspe.h: New file.
+
+ * config.gcc: Add powerpc-*-linux-gnuspe* target.
+
+2003-05-06 Richard Henderson <rth@redhat.com>
+
+ * unwind-dw2.c (uw_update_context_1): Only set cfa as sp if
+ previous frame didn't save sp. Clear sp for next frame.
+ (uw_install_context_1): Honor saved sp from frame.
+
+2003-05-06 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips-protos.h (mips_subword, mips_output_move): Declare.
+ (mips_move_1word, mips_move_2words): Remove declaration.
+ (mips_split_64bit_move_p, mips_split_64bit_move): Declare.
+ (mips_restore_gp): Remove insn argument.
+ * config/mips/mips.h (FP_REG_RTX_P): New macro.
+ * config/mips/mips.c (volatile_buffer): Remove.
+ (mips_subword, mips_split_64bit_move_p, mips_split_64bit_move): New.
+ (mips_move_1word, mips_move_2words): Remove, replacing with...
+ (mips_output_move): ...this new function.
+ (mips_restore_gp): Remove insn argument. Adjust for above changes.
+ (print_operand): Make '%h' print %hi(op) for HIGH operands. Remove
+ handling of floating-point constants. Handle zero CONST_DOUBLE
+ arguments.
+ (mips_annotate_frame_insn): Replace with...
+ (mips_set_frame_expr): ...this, which just takes one argument.
+ (mips_frame_set): Change the register argument to an rtx.
+ (mips_emit_frame_related_store): Use mips_split_64bit_move_p to
+ check whether moves should be split. Use mips_split_64bit_move
+ to split them. Use mips_subword to generate the high and low
+ parts of a paired FPR. Adjust calls to frame_set and
+ mips_set_frame_expr.
+ (mips_expand_prologue): Simplify due to above changes.
+ * config/mips/mips.md: Add splitters for 64-bit moves on 32-bit
+ targets, replacing xisting register-only versions.
+ (UNSPEC_STORE_DF_HIGH): New unspec.
+ (UNSPEC_LOAD_DF_LOW, UNSPEC_LOAD_DF_HIGH): New unspecs.
+ (mulsi3_r4000, muldi3_internal2): Avoid use of mips_move_1word.
+ (*paradoxical_extendhidi2): Remove.
+ (movdi_internal, movdi_internal2): Use mips_output_move.
+ (*movdi_internal2_mips16, movsi_internal, movcc): Likewise.
+ (movsf_internal1, movsf_internal2): Likewise.
+ (movdf_internal1a): Likewise. Fix length and type of f <- G case.
+ (movdf_internal1b): Use mips_output_move. Fix type of f <- G case.
+ (movdf_internal2): Use mips_output_move. Fix lengths of FPR moves.
+ Add m <- G alternative.
+ (load_df_low, load_df_high, store_df_low): New patterns.
+ (movhi_internal): Use @ template instead of calling a function.
+ Remove unnecessary 'z' alternatives.
+ (movqi_internal): Likewise.
+ (exception_receiver): Update call to mips_restore_gp.
+
+2003-05-06 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips-protos.h (mips_simplify_dwarf_addr): Remove.
+ (mips_delegitimize_address): Declare.
+ * config/mips/mips.h (ASM_SIMPLIFY_DWARF_ADDR): Undefine.
+ (FIND_BASE_TERM): Define.
+ * config/mips/mips.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
+ (mips_delegitimize_address): Renamed from mips_simplify_dwarf_addr.
+ Handle small-data addresses.
+
+2003-05-05 Roger Sayle <roger@eyesopen.com>
+
+ * real.c (real_powi): New function to calculate the value of
+ a real raised to an integer power, i.e. pow(x,n) for int n.
+ (real_sqrt): Convert to using the faster do_add, do_multiply
+ and do_divide API for consistency with the rest of real.c.
+ * real.h (real_powi): Prototype here.
+ * builtins.c (fold_builtin): Avoid local variable mode when
+ evaluating sqrt at compile time. Attempt to evaluate pow at
+ compile-time, by checking for an integral exponent.
+
+2003-05-05 Richard Henderson <rth@redhat.com>
+
+ * doc/extend.texi (Variable Attributes): Re-sort table and tidy.
+
+2003-05-05 David O'Brien <obrien@FreeBSD.org>
+
+ * config/rs6000/sysv4.h (CPP_OS_FREEBSD_SPEC): Add __ELF__ to mirror
+ other FreeBSD ports.
+ (LINK_OS_FREEBSD_SPEC): Mirror conventions on other FreeBSD ports.
+ (_LITTLE_ENDIAN): Use __LITTLE_ENDIAN__ instead.
+
+2003-05-05 Janis Johnson <janis187@us.ibm.com>
+
+ * Makefile.in: (site.exp): Add ALT_CC_UNDER_TEST, add quotes around
+ expanded variables.
+ * doc/sourcebuild.texi (C tests): Describe gcc.dg/compat tests.
+
+2003-05-05 Zack Weinberg <zack@codesourcery.com>
+
+ * rtl.h (STRING_POOL_ADDRESS_P): Rename to DEFERRED_CONSTANT_P.
+ * varasm.c (struct varasm_status): Add deferred_constants field.
+ (n_deferred_strings): Delete variable.
+ (n_deferred_constants): New #define.
+ (struct constant_descriptor_tree): Kill next and label fields.
+ (const_hash_table, MAX_HASH_TABLE): Delete.
+ (const_desc_htab): New static variable.
+ (const_hash): Rename const_desc_hash, and make it fit the
+ hashtab.h interface.
+ (const_desc_eq): New.
+ (const_hash_1, compare_constant): Const-ify arguments.
+ (build_constant_desc): Set DEFERRED_CONSTANT_P on all new
+ SYMBOL_REFs. Clarify comments. Don't set desc->label.
+ (output_constant_def): Do the lookup/insert using the
+ hashtab.h interface. Don't muck with n_deferred_constants or
+ DEFERRED_CONSTANT_P here.
+ Always call maybe_output_constant_def_contents.
+ (maybe_output_constant_def_contents): Take a pointer to the
+ descriptor, not the EXP and RTL separately. Return
+ immediately if this constant is not deferred. Defer output of
+ everything, except writable string constants. Update
+ n_deferred_constants here.
+ (output_constant_def_contents): Now takes just one argument,
+ an rtx. Clear DEFERRED_CONSTANT_P here.
+ (mark_constant_pool): Update for rename of n_deferred_strings.
+ (mark_constant): Don't clear DEFERRED_CONSTANT_P here.
+
+ (init_varasm_status): Clear p->deferred_constants.
+ (init_varasm_once): Call htab_create_ggc for const_desc_htab.
+
+2003-05-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (expand_builtin_stpcpy): Only expand when the length
+ of the source string can be evaluated at compile-time.
+
+2003-05-05 Aldy Hernandez <aldyh@redhat.com>
+
+ * testsuite/gcc.c-torture/compile/simd-6.c: New.
+
+ * c-typeck.c (digest_init): Handle arrays of vector constants.
+
+2003-05-05 Jakub Jelinek <jakub@redhat.com>
+
+ * builtins.c (expand_builtin_mempcpy): New function.
+ (expand_builtin_stpcpy): Optimize stpcpy whose return value is
+ ignored into strcpy no matter what arguments it has.
+ (expand_builtin) <case BUILT_IN_MEMPCPY>: Call
+ expand_builtin_mempcpy.
+
+2003-05-05 Aldy Hernandez <aldyh@redhat.com>
+
+ * testsuite/gcc.dg/20030505.c: New.
+
+ * c-typeck.c (convert_for_assignment): Opaque pointers can
+ interconvert.
+
+ * config/rs6000/rs6000.c: New global opaque_p_V2SI_type_node.
+ (rs6000_init_builtins): Initialize opaque_p_V2SI_type_node.
+ (spe_init_builtins): Rename all pv2si_type_node to
+ opaque_p_V2SI_type_node.
+ Remove declaration of pv2si_type_node.
+ (is_ev64_opaque_type): Accept opaque pointers.
+
+2003-05-05 Geoffrey Keating <geoffk@apple.com>
+
+ * config/rs6000/rs6000.c (validate_condition_mode): Use
+ flag_finite_math_only.
+ (rs6000_reverse_condition): Never return UNKNOWN; use
+ flag_finite_math_only.
+ (rs6000_generate_compare): Use flag_finite_math_only.
+ (rs6000_emit_cmove): Handle UNLE. Support UNEQ under -ffast-math.
+ Use HONOR_* rather than flag_unsafe_math_optimizations. Correct
+ UNGE and GT cases. Handle UNEQ and LTGT when ! HONOR_NANS.
+
+ * toplev.c (check_global_declarations): Suppress not-used warning
+ for volatile variables.
+
+2003-05-05 Olivier Hainque <hainque@act-europe.fr>
+
+ * expr.c (expand_expr, case BIT_FIELD_REF): Refine the test forcing
+ usage of bitfield instructions for mode1 != BLKmode, only ignoring
+ SLOW_UNALIGNED_ACCESS if the field is not byte aligned.
+ (store_field): Likewise.
+
+2003-05-05 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
+ evsubifw to builtins accepting 5-bit unsigned constants.
+ (easy_vector_constant): Return if V1DImode. Fix typo.
+
+2003-05-05 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.h: Revert licensing change from last patch.
+
+2003-05-05 DJ Delorie <dj@redhat.com>
+
+ * config/stormy16/stormy16.md (negsi2): Allocate the pseudos
+ before reload, but defer the split until after.
+ * config/stormy16/stormy16.c (xstormy16_expand_arith): Modify
+ to match.
+
+2003-05-05 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 440 support.
+ * config/rs6000/vxworks.h (CC1_SPEC): Use -mcpu=440 for t440.
+
+2003-05-05 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * libgcov.c (__gcov_merge_add): Do not use gcov_type when inhibit_libc
+ is defined.
+
+2003-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtin-attrs.def (ATTR_NOTHROW_NONNULL_1,
+ ATTR_NOTHROW_NONNULL_2, ATTR_NOTHROW_NONNULL_3): Renamed from
+ ATTR_NONNULL_1, ATTR_NONNULL_2 and ATTR_NONNULL_3.
+
+ (ATTR_NOTHROW_NONNULL_1_2, ATTR_NOTHROW_NONNULL_1_4,
+ ATTR_CONST_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1,
+ ATTR_PURE_NOTHROW_NONNULL_1_2, ATTR_MALLOC_NOTHROW_NONNULL_1):
+ New.
+
+ * builtins.def (DEF_EXT_FALLBACK_BUILTIN): Accept ATTRS argument.
+ (BUILT_IN_BZERO, BUILT_IN_BCOPY, BUILT_IN_BCMP): Update comment
+
+ (BUILT_IN_INDEX, BUILT_IN_RINDEX, BUILT_IN_MEMCPY,
+ BUILT_IN_MEMMOVE, BUILT_IN_MEMCMP, BUILT_IN_MEMSET,
+ BUILT_IN_MEMPCPY, BUILT_IN_STRCAT, BUILT_IN_STRNCAT,
+ BUILT_IN_STPCPY, BUILT_IN_STRCPY, BUILT_IN_STRNCPY,
+ BUILT_IN_STRCMP, BUILT_IN_STRNCMP, BUILT_IN_STRLEN,
+ BUILT_IN_STRSTR, BUILT_IN_STRPBRK, BUILT_IN_STRSPN,
+ BUILT_IN_STRCSPN, BUILT_IN_STRCHR, BUILT_IN_STRRCHR, BUILT_IN_NAN,
+ BUILT_IN_NANF, BUILT_IN_NANL, BUILT_IN_NANS, BUILT_IN_NANSF,
+ BUILT_IN_NANSL, BUILT_IN_PUTS, BUILT_IN_FPUTC, BUILT_IN_FPUTS,
+ BUILT_IN_FWRITE, BUILT_IN_PUTS_UNLOCKED, BUILT_IN_FPUTC_UNLOCKED,
+ BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FWRITE_UNLOCKED,
+ BUILT_IN_STRDUP): Add "nonnull" attribute.
+
+2003-05-04 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * expr.c (store_field): Don't clobber TEMP in shift: it might be
+ a variable.
+ (get_inner_reference): Don't go through a VIEW_CONVERT_EXPR
+ whose purpose is to step up the alignment.
+ (expand_expr, case ADDR_EXPR): Force LO_SUM into memory, just like REG.
+
+ * stor-layout.c (compute_record_mode): Relax restriction
+ on fields crossing word boundaries forcing BLKmode.
+
+2003-05-04 Neil Booth <neil@daikokuya.co.uk>
+
+ * cppinit.c (cpp_create_reader, post_options): Warn about
+ trigraphs unless explicity set or -trigraphs.
+ * cpplex.c (warn_in_comment): New.
+ (_cpp_process_line_notes): Better handling of -Wtrigraphs.
+ (_cpp_skip_block_comment): Add call to _cpp_process_line_notes.
+ * doc/cppopts.texi, doc/cpp.texi: Update.
+
+2003-05-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * Makefile.in (LIBGCOV): Add _gcov_merge_add.
+ * gcov-io.h: Make GCOV_LINKAGE extern in libgcov and prevent resulting
+ namespace clash.
+ (GCOV_MERGE_FUNCTIONS): New.
+ (gcov_merge_fn): Declare.
+ (struct gcov_ctr_info): New field "merge".
+ (__gcov_merge_add): Declare.
+ * coverage.c (ctr_merge_functions): New.
+ (build_ctr_info_type, build_ctr_info_value): Initialize merge field
+ of gcov_ctr_info type.
+ * libgcov.c (__gcov_merge_add): New.
+ (gcov_exit): Call a hook to merge values of counters.
+
+2003-05-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * toplev.h (pedwarn_with_file_and_line): Don't declare.
+ * diagnostic.c (pedwarn_with_file_and_line): Remove.
+
+2003-05-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * varasm.c (assemble_variable): Don't use error_with_file_and_line.
+
+2003-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (expand_builtin_constant_p, expand_builtin_strlen,
+ expand_builtin_frame_address): Update prototypes.
+ (expand_builtin_constant_p, expand_builtin_strlen,
+ expand_builtin_strcpy, expand_builtin_memset,
+ expand_builtin_bzero, expand_builtin_args_info,
+ expand_builtin_frame_address): Pass in just the argument(s)
+ needed, not the entire expression `exp'.
+ (expand_builtin): Update all calls to these functions.
+
+2003-05-03 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (expand_builtin) <BUILT_IN_DWARF_FP_REGNUM>: Remove.
+ <BUILT_IN_DWARF_SP_COLUMN>: New.
+ * builtins.def (BUILT_IN_DWARF_FP_REGNUM): Remove.
+ (BUILT_IN_DWARF_SP_COLUMN): New.
+ * dwarf2out.c (expand_builtin_dwarf_fp_regnum): Remove.
+ (expand_builtin_dwarf_sp_column): New.
+ * except.h: Update to match.
+ * unwind-dw2.c (execute_stack_op): Correct stack push typo.
+ (execute_cfa_program): Record location expression address
+ before extracting length.
+ (uw_update_context_1): Install old CFA into stack pointer column.
+ (uw_init_context_1): Set cfa_reg to stack pointer column.
+
+2003-05-03 Richard Henderson <rth@redhat.com>
+
+ * config/rs6000/rs6000.c (constant_pool_expr_p): Make static and
+ return bool.
+ (toc_relative_expr_p): Likewise.
+ (SPE_CONST_OFFSET_OK): Move from rs6000.h.
+ (legitimate_constant_pool_address_p): Move from rs6000.h, change
+ into a function, downcase all users.
+ (legitimate_small_data_p): Likewise.
+ (legitimate_offset_address_p): Likewise.
+ (legitimate_indexed_address_p): Likewise.
+ (legitimate_indirect_address_p): Likewise.
+ (legitimate_lo_sum_address_p): Likewise.
+ (rs6000_mode_dependent_address): Likewise.
+ * rs6000.h (CONSTANT_POOL_EXPR_P, TOC_RELATIVE_EXPR_P): Remove.
+ (SPE_CONST_OFFSET_OK, LEGITIMATE_CONSTANT_POOL_ADDRESS_P,
+ LEGITIMATE_SMALL_DATA_P, LEGITIMATE_OFFSET_ADDRESS_P,
+ LEGITIMATE_INDEXED_ADDRESS_P, LEGITIMATE_INDIRECT_ADDRESS_P,
+ LEGITIMATE_LO_SUM_ADDRESS_P): Move into rs6000.c.
+ (LEGITIMATE_ADDRESS_INTEGER_P): Remove.
+ (GO_IF_MODE_DEPENDENT_ADDRESS): Use rs6000_mode_dependent_address.
+ * config/rs6000/rs6000-protos.h: Update.
+
+2003-05-03 Geoffrey Keating <geoffk@apple.com>
+
+ * config/rs6000/rs6000.h (REVERSIBLE_CC_MODE): Define.
+ (REVERSE_CONDITION): Define.
+
+ * config/rs6000/rs6000.c (scc_comparison_operator): Make equivalent
+ to branch_positive_comparison_operator.
+ (ccr_bit): Check that sCOND conditions are actually a positive bit.
+ (print_operand): Remove %D substitution.
+ (rs6000_emit_sCOND): Generate complement operation to ensure that
+ sCOND input is a positive bit.
+ * config/rs6000/rs6000.md: Rearrange sCOND templates to be in the
+ same order as bCOND, and add the missing ones. Remove the %D
+ substitutions from the scc patterns.
+
+ * simplify-rtx.c (simplify_relational_operation): Add case for
+ ! (fabs(x) < 0.0).
+
+2003-05-03 Bruce Korb <bkorb@gnu.org>
+
+ * gcc/fixinc/fixincl.tpl(dne): restore this to force merge conflicts
+ in fixincl.x
+ * gcc/fixinc/inclhack.def(bsd_stdio_attrs_conflict): fix placement
+
+2003-05-03 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.h: Remove unecessary casts. Misc cleanups.
+
+2003-05-03 Zack Weinberg <zack@codesourcery.com>
+
+ PR c/10604
+ * c-common.c (warn_sign_compare): Initialize to -1.
+ * c-opts.c (c_common_init_options): Don't set warn_sign_compare here.
+ (c_common_decode_option <OPT_Wall>): Set warn_sign_compare
+ for C++ only.
+ (c_common_post_options): Set warn_sign_compare from extra_warnings
+ if it's still -1 at this point.
+
+ * toplev.c (maybe_warn_unused_parameter): New static variable.
+ (set_Wextra): New static function.
+ (W_options): Remove "extra".
+ (decode_W_option): Call set_Wextra.
+ (independent_decode_option): Likewise.
+ (set_Wunused): Cooperate with set_Wextra in setting
+ warn_unused_parameter.
+ (rest_of_compilation): No need to check extra_warnings as
+ well as warn_uninitialized.
+
+ * c-typeck.c (build_binary_op, build_conditional_expr):
+ No need to check extra_warnings as well as warn_sign_compare.
+ (internal_build_compound_expr): No need to check extra_warnings
+ as well as warn_unused_value.
+ * function.c (expand_function_end): No need to check extra_warnings
+ as well as warn_unused_parameter.
+ * stmt.c (expand_expr_stmt_value): No need to check extra_warnings
+ as well as warn_unused_value.
+
+ * doc/invoke.texi: Clarify documentation of -Wsign-compare.
+
+ * Makefile.in: Disable -Werror for gengtype-lex.o.
+
+2003-05-03 Olivier Hainque <hainque@act-europe.fr>
+
+ * emit-rtl.c (last_call_insn, add_function_usage_to): New functions.
+ * rtl.h (last_call_insn, add_function_usage_to): New prototypes.
+ * builtins.c (expand_builtin_apply): Use the new emit-rtl functions.
+ * calls.c (emit_call_1): Likewise.
+ (expand_call): For calls initializing constant memory, replace
+ emission of standalone mem /u clobber with function usage entry.
+ * expr.c (emit_block_move_via_libcall): Likewise.
+ * cse.c (count_reg_usage, case EXPR_LIST): New case.
+ * flow.c (propagate_one_insn): Pass entire operand of
+ CALL_INSN_FUNCTION_USAGE to mark_used_regs.
+ * integrate.c (try_constants): For CALL_INSNs, substitute constants
+ within the FUNCTION_USAGE also.
+ * loop.c (prescan_loop): Note clobbers of const mem mentioned in
+ FUNCTION_USAGE lists.
+ * reload1.c (replace_pseudos_in): Renamed.
+ (reload): Use it for clobbers surviving until the end of the reload.
+
+2003-05-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * expr.c (expand_expr, case VIEW_CONVERT_EXPR): Don't use
+ gen_lowpart on non-integer modes.
+
+ * stor-layout.c (place_field): When adjusting offset_align, use
+ desired_align, not DECL_ALIGN.
+
+2003-05-03 Nathan Sidwell <nathan@codesourcery.com>
+
+ * c-decl.c (pending_invalid_xref_file): Remove.
+ (pending_invalid_xref_line): Remove.
+ (pending_invalid_xref_location): New.
+ (lookup_label): Use location_t and input_location directly.
+ (lookup_tag): Likewise.
+ (pending_xref_error): Likewise.
+ (c_expand_body_1): Likewise.
+ * c-common.c (x_expand_start_cond): Likewise.
+ * c-semantics.c (genrtl_for_stmt): Likewise.
+ (find_reachable_label): Likewise.
+ * expr.c (expand_expr): Likewise.
+ * integrate.c (output_inline_function): Likewise.
+ * tree-inline.c (find_alloca_call): Likewise.
+ (find_builtin_longjmp_call): Likewise.
+ * gcc.c (input_filename): Make static.
+
2003-05-03 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.md: Fix comment typo.
* config/rs6000/rs6000.c (rs6000_attribute_table): Add 'extern'
to tentative declaration.
-
+
* config/rs6000/sysv4.h (SYMBOL_FLAG_SMALL_V4): Delete.
(SYMBOL_FLAG_SMALL_V4): Delete.
* config/rs6000/rs6000.c (small_data_operand): Use SYMBOL_REF_SMALL_P.
* configure: Regenerate.
2003-05-01 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
-
- PR target/8257
- * config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
- alpha_start_function, alpha_expand_epilogue, unicosmk_gen_dsib):
- Avoid undefined shifts by making the shift operand unsigned.
-
+
+ PR target/8257
+ * config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
+ alpha_start_function, alpha_expand_epilogue, unicosmk_gen_dsib):
+ Avoid undefined shifts by making the shift operand unsigned.
+
2003-05-01 DJ Delorie <dj@redhat.com>
* reload.c (find_reloads): Also check that all of a multi-reg
2003-04-07 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (mips_classify_symbol): Add catch-all case for
- handling local labels when TARGET_ABICALLS.
+ * config/mips/mips.c (mips_classify_symbol): Add catch-all case for
+ handling local labels when TARGET_ABICALLS.
2003-04-04 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips_expand_epilogue): Add an
- integer argument.
- (mips_expand_call): Likewise.
- * config/mips/mips.h (TARGET_SIBCALLS): New macro.
- (FIXED_REGISTERS): Clear $31 entry.
- (CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTER): Likewise.
- (EPILOGUE_USES): Define.
- * config/mips/mips.c (mips_function_ok_for_sibcall): New function.
- (TARGET_FUNCTION_OK_FOR_SIBCALL): Use it.
- (override_options): Add a 'j' register class.
- (mips_expand_call): Handle sibcalls
- (mips_expand_epilogue): Handle epilogues for sibcalls.
- * config/mips/mips.md (epilogue): Adjust call to mips_expand_epilogue.
- (sibcall_epilogue): New pattern.
- (call, call_value): Adjust calls to mips_expand_call.
- (sibcall, sibcall_value): New expanders.
- (sibcall_internal, sibcall_value_internal): New patterns.
- (sibcall_value_multiple_internal): New pattern.
+ * config/mips/mips-protos.h (mips_expand_epilogue): Add an
+ integer argument.
+ (mips_expand_call): Likewise.
+ * config/mips/mips.h (TARGET_SIBCALLS): New macro.
+ (FIXED_REGISTERS): Clear $31 entry.
+ (CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTER): Likewise.
+ (EPILOGUE_USES): Define.
+ * config/mips/mips.c (mips_function_ok_for_sibcall): New function.
+ (TARGET_FUNCTION_OK_FOR_SIBCALL): Use it.
+ (override_options): Add a 'j' register class.
+ (mips_expand_call): Handle sibcalls
+ (mips_expand_epilogue): Handle epilogues for sibcalls.
+ * config/mips/mips.md (epilogue): Adjust call to mips_expand_epilogue.
+ (sibcall_epilogue): New pattern.
+ (call, call_value): Adjust calls to mips_expand_call.
+ (sibcall, sibcall_value): New expanders.
+ (sibcall_internal, sibcall_value_internal): New patterns.
+ (sibcall_value_multiple_internal): New pattern.
2003-03-25 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.md (extended_mips16): New attribute.
- (define_attr length): Default to 8 if extended_mips16 == yes.
- (truncdisi2): Set extended_mips16 to yes for the sll alternative.
- (truncdihi2, truncdiqi2, *extendsidi2): Likewise.
- (call_internal): Set extended_mips16 to yes for direct jumps.
- Remove redundant mode attribute.
- (call_value_internal, call_value_multiple_internal): Likewise.
- (call_split): Remove redundant mode attribute.
- (call_value_split, call_value_multiple_split): Likewise.
+ * config/mips/mips.md (extended_mips16): New attribute.
+ (define_attr length): Default to 8 if extended_mips16 == yes.
+ (truncdisi2): Set extended_mips16 to yes for the sll alternative.
+ (truncdihi2, truncdiqi2, *extendsidi2): Likewise.
+ (call_internal): Set extended_mips16 to yes for direct jumps.
+ Remove redundant mode attribute.
+ (call_value_internal, call_value_multiple_internal): Likewise.
+ (call_split): Remove redundant mode attribute.
+ (call_value_split, call_value_multiple_split): Likewise.
- * config/mips/mips.c (mips_symbol_insns): Rework. Fix handling
- of unaligned offsets.
+ * config/mips/mips.c (mips_symbol_insns): Rework. Fix handling
+ of unaligned offsets.
* config/mips/mips.c (mips_splittable_symbol_p): Fix handling
- of SYMBOL_GENERAL.
+ of SYMBOL_GENERAL.
2003-03-22 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (TARGET_EXPLICIT_RELOCS): Add commentary.
- * config/mips/mips.c (override_options): Disable -mexplicit-relocs
- for mips16 code.
+ * config/mips/mips.h (TARGET_EXPLICIT_RELOCS): Add commentary.
+ * config/mips/mips.c (override_options): Disable -mexplicit-relocs
+ for mips16 code.
2003-03-22 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (ADDRESS_COST): Define.
+ * config/mips/mips.h (ADDRESS_COST): Define.
2003-03-20 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (EXTRA_CONSTRAINT): Give existing meaning of
- 'R' to 'U'. Make 'R' mean a single-instruction memory reference.
- * config/mips/mips.md: Replace 'R' constraints with 'U'.
+ * config/mips/mips.h (EXTRA_CONSTRAINT): Give existing meaning of
+ 'R' to 'U'. Make 'R' mean a single-instruction memory reference.
+ * config/mips/mips.md: Replace 'R' constraints with 'U'.
2003-03-18 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.md (truncdisi2): Add commentary. Use sll instead
- of a two-instruction sequence. Add register->memory alternative.
- (truncdihi2, truncdiqi2): Likewise.
- Rework shift/truncate instructions so that they only handle right
- shifts of 32 (or more, in the case of arithmetic shifts).
- Add patterns for truncate/sign-extend.
+ * config/mips/mips.md (truncdisi2): Add commentary. Use sll instead
+ of a two-instruction sequence. Add register->memory alternative.
+ (truncdihi2, truncdiqi2): Likewise.
+ Rework shift/truncate instructions so that they only handle right
+ shifts of 32 (or more, in the case of arithmetic shifts).
+ Add patterns for truncate/sign-extend.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * configure.in (mips*-*-*): Check for explicit relocation support.
- * configure: Regenerate.
+ * configure.in (mips*-*-*): Check for explicit relocation support.
+ * configure: Regenerate.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (TARGET_SWITCHES): Add -mexplicit-relocs
- and -mno-explicit-relocs.
- (MASK_EXPLICIT_RELOCS): Define.
- (TARGET_EXPLICIT_RELOCS): Use it.
- (mips_split_addresses): Remove declaration.
- * config/mips/mips.c (override_options): Update comment for
- mips_split_addresses. Clear MASK_EXPLICIT_RELOCS for non-PIC n64.
+ * config/mips/mips.h (TARGET_SWITCHES): Add -mexplicit-relocs
+ and -mno-explicit-relocs.
+ (MASK_EXPLICIT_RELOCS): Define.
+ (TARGET_EXPLICIT_RELOCS): Use it.
+ (mips_split_addresses): Remove declaration.
+ * config/mips/mips.c (override_options): Update comment for
+ mips_split_addresses. Clear MASK_EXPLICIT_RELOCS for non-PIC n64.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * combine.c (gen_lowpart_for_combine): Treat the lowpart Pmode of
- a CONST as identity. Check the return value of gen_lowpart_common.
+ * combine.c (gen_lowpart_for_combine): Treat the lowpart Pmode of
+ a CONST as identity. Check the return value of gen_lowpart_common.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (mips_legitimize_symbol): Handle small data
- references for TARGET_EXPLICIT_RELOCS.
- (mips_reloc_string): Return "%gp_rel(" for RELOC_GPREL16 if
- !TARGET_MIPS16.
+ * config/mips/mips.c (mips_legitimize_symbol): Handle small data
+ references for TARGET_EXPLICIT_RELOCS.
+ (mips_reloc_string): Return "%gp_rel(" for RELOC_GPREL16 if
+ !TARGET_MIPS16.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.md: Replace 'IQ' mips16 constraints with just 'Q'.
- (addsi3): Remove redundant constraints.
- (addsi3_internal): Use separate register & constant alternatives.
- Use a 'Q' constraint and "addiu" insn for the latter.
- (adddi3_internal_3, addsi3_internal_2): Likewise.
+ * config/mips/mips.md: Replace 'IQ' mips16 constraints with just 'Q'.
+ (addsi3): Remove redundant constraints.
+ (addsi3_internal): Use separate register & constant alternatives.
+ Use a 'Q' constraint and "addiu" insn for the latter.
+ (adddi3_internal_3, addsi3_internal_2): Likewise.
2003-03-13 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips_expand_unaligned_load): Declare.
- (mips_expand_unaligned_store): Declare.
- * config/mips/mips.c (mips_get_unaligned_mem): New fn.
- (mips_expand_unaligned_load, mips_expand_unaligned_store): New fns.
- * config/mips/mips.md (UNSPEC_ULW, UNSPEC_USW): Remove.
- (UNSPEC_ULD, UNSPEC_USD): Remove.
- (UNSPEC_LWL, UNSPEC_LWR, UNSPEC_SWL, UNSPEC_SWR): New.
- (UNSPEC_LDL, UNSPEC_LDR, UNSPEC_SDL, UNSPEC_SDR): New.
- (extv, extzv): Use mips_expand_unaligned_load.
- (insv): Use mips_expand_unaligned_store. Use a reg_or_0_operand
- predicate for operand 3.
- (movsi_ulw, movsi_usw): Replace with...
- (mov_lwl, mov_lwr, mov_swl, move_swr): ...these new insns.
- (movdi_uld, movdi_usd): Likewise replace with...
- (mov_ldl, mov_ldr, mov_sdl, move_sdr): ...these insns.
+ * config/mips/mips-protos.h (mips_expand_unaligned_load): Declare.
+ (mips_expand_unaligned_store): Declare.
+ * config/mips/mips.c (mips_get_unaligned_mem): New fn.
+ (mips_expand_unaligned_load, mips_expand_unaligned_store): New fns.
+ * config/mips/mips.md (UNSPEC_ULW, UNSPEC_USW): Remove.
+ (UNSPEC_ULD, UNSPEC_USD): Remove.
+ (UNSPEC_LWL, UNSPEC_LWR, UNSPEC_SWL, UNSPEC_SWR): New.
+ (UNSPEC_LDL, UNSPEC_LDR, UNSPEC_SDL, UNSPEC_SDR): New.
+ (extv, extzv): Use mips_expand_unaligned_load.
+ (insv): Use mips_expand_unaligned_store. Use a reg_or_0_operand
+ predicate for operand 3.
+ (movsi_ulw, movsi_usw): Replace with...
+ (mov_lwl, mov_lwr, mov_swl, move_swr): ...these new insns.
+ (movdi_uld, movdi_usd): Likewise replace with...
+ (mov_ldl, mov_ldr, mov_sdl, move_sdr): ...these insns.
2003-02-26 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips_global_pic_constant_p): Declare.
- * config/mips/mips.h (LEA_REGS): New register class.
- (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
- (GR_REG_CLASS_P): Include LEA_REGS.
- (DANGEROUS_FOR_LA25_P): New macro.
- (EXTRA_CONSTRAINT): Add !DANGEROUS_FOR_LA25_P to R's condition.
- Add a T constraint for the DANGEROUS_FOR_LA25_P case.
- * config/mips/mips.c (mips_regno_to_class): Change GR_REGS
- entries to LEA_REGS.
- (mips_global_pic_constant_p): New function.
- (override_options): Add 'e' register constraint.
- (mips_secondary_reload_class): Return LEA_REGS when reloading
- a dangerous constant into a class containing $25.
- * config/mips/mips.md (movdi_internal2): Add an e <- T alternative.
- (movsi_internal): Likewise.
+ * config/mips/mips-protos.h (mips_global_pic_constant_p): Declare.
+ * config/mips/mips.h (LEA_REGS): New register class.
+ (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
+ (GR_REG_CLASS_P): Include LEA_REGS.
+ (DANGEROUS_FOR_LA25_P): New macro.
+ (EXTRA_CONSTRAINT): Add !DANGEROUS_FOR_LA25_P to R's condition.
+ Add a T constraint for the DANGEROUS_FOR_LA25_P case.
+ * config/mips/mips.c (mips_regno_to_class): Change GR_REGS
+ entries to LEA_REGS.
+ (mips_global_pic_constant_p): New function.
+ (override_options): Add 'e' register constraint.
+ (mips_secondary_reload_class): Return LEA_REGS when reloading
+ a dangerous constant into a class containing $25.
+ * config/mips/mips.md (movdi_internal2): Add an e <- T alternative.
+ (movsi_internal): Likewise.
2003-02-23 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (TARGET_SPLIT_CALLS): New macro.
- * config/mips/mips.md (call_split): New insn.
- (call_value_split, call_value_multiple_split): New insns.
- (call_internal): Turn into a define_insn_and_split. Split the
- instruction into a call and $gp load if TARGET_SPLIT_CALLS.
- (call_value_internal, call_value_multiple_internal): Likewise.
+ * config/mips/mips.h (TARGET_SPLIT_CALLS): New macro.
+ * config/mips/mips.md (call_split): New insn.
+ (call_value_split, call_value_multiple_split): New insns.
+ (call_internal): Turn into a define_insn_and_split. Split the
+ instruction into a call and $gp load if TARGET_SPLIT_CALLS.
+ (call_value_internal, call_value_multiple_internal): Likewise.
2003-02-23 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (mips_reloc_string): Return "%got(" for
- RELOC_GOT_PAGE and RELOC_GOT_DISP if !TARGET_NEWABI.
- (mips_encode_section_info): Don't take symbol visibility into
- account if TARGET_ABICALLS. Add more commentary.
- * config/mips/mips.md: Add commentary above reloc constants.
+ * config/mips/mips.c (mips_reloc_string): Return "%got(" for
+ RELOC_GOT_PAGE and RELOC_GOT_DISP if !TARGET_NEWABI.
+ (mips_encode_section_info): Don't take symbol visibility into
+ account if TARGET_ABICALLS. Add more commentary.
+ * config/mips/mips.md: Add commentary above reloc constants.
2003-02-12 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (mips_legitimize_const_move): New, extracted
- from mips_legitimize_move. Legitimize constant pool references.
- (mips_legitimize_move): Call mips_legitimize_const_move. Attach
- a REG_EQUAL note to the last instruction.
+ * config/mips/mips.c (mips_legitimize_const_move): New, extracted
+ from mips_legitimize_move. Legitimize constant pool references.
+ (mips_legitimize_move): Call mips_legitimize_const_move. Attach
+ a REG_EQUAL note to the last instruction.
2003-02-11 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips_simplify_dwarf_addr): Declare.
- * config/mips/mips.h (TARGET_EXPLICIT_RELOCS, TARGET_NEWABI): New.
- (ASM_SIMPLIFY_DWARF_ADDR): Define to mips_simplify_dwarf_addr.
- (EXTRA_CONSTRAINT): Allow symbolic call addresses for TARGET_ABICALLS.
- * config/mips/mips.md (UNSPEC_HIGH): New constant.
- (UNSPEC_RELOC_GPREL16): Rename to...
- (RELOC_GPREL16): ...this.
- (RELOC_GOT_HI, RELOC_GOT_LO, RELOC_GOT_PAGE, RELOC_GOT_DISP): New.
- (RELOC_CALL16, RELOC_CALL_HI, RELOC_CALL_LO): New.
- (macro_calls): New attribute.
- (length): Use it to set the default length of calls. Don't allow
- calls to have delay slots if macro_calls is "yes".
- (luisi, luidi): New patterns.
- (lowsi, lowdi): Use '%R' to print the relocation.
- (lowdi_extend): Remove.
- (loadgp): Remove mode from operand 0. Use '%0' instead of '%a0'.
- (call_internal): Merge alternatives. Always use "jal".
- (call_value_internal, call_value_multiple_internal): Likewise.
- (reloc_gprel16): Remove.
- * config/mips/mips.c (mips_got_alias_set): New variable.
- (mips_classify_constant): Handle the new relocation constants.
- (mips_classify_symbol): Reverse the sense of SYMBOL_REF_FLAG for PIC.
- (mips_symbolic_address_p): Return false if generating explicit relocs.
- Otherwise allow local PIC symbols to have an offset.
- (mips_splittable_symbol_p): New function.
- (mips_classify_address): Use it to check whether a LO_SUM is valid.
- (mips_const_insns): Always accept HIGH.
- (call_insn_operand): Don't accept global symbols if using explicit
- relocs.
- (move_operand): Don't accept HIGH when generating PIC.
- (mips_reloc, mips_lui_reloc): New functions.
- (mips_force_temporary): Remove MODE argument. Expect VALUE to
- be a valid right-hand-side for a SET pattern.
- (mips_load_got, mips_load_got16, mips_load_got32): New functions.
- (mips_emit_high): New function.
- (mips_legitimize_symbol): Use mips_reloc for the mips16 gp-relative
- case. Use mips_splittable_symbol_p to check whether a LO_SUM
- address should be used. Use mips_emit_high to generate the
- high part of such an address. Adjust the global symbol + offset
- case to match the change to mips_force_temprorary.
- (mips_legitimize_move): Shuffle call to mips_legitimize_symbol.
- If generating explicit-reloc PIC, load the address of global
- symbols from the GOT. Use mips_emit_high to emit the high part
- of an address.
- (mips_simplify_dwarf_addr): New function.
- (mips_move_1word): Use lwc1 instead of l.s and swc1 instead of s.s.
- (mips_move_2words): Likewise ldc1/l.d and sdc1/s.d if TARGET_64BIT.
- (mips_expand_call): Load the addresses of global functions using
- %call* relocs if generating explicit-reloc PIC. Don't generate
- an exception_receiver pattern.
- (override_options): Initialize mips_got_alias_set.
- (print_relocation): Remove in favour of...
- (mips_reloc_string): ...this new function.
- (print_operand): Handle '%R'. Use mips_reloc_string.
- (print_operand_address): Use print_operand to print the symbolic
- part of a LO_SUM address.
- (mips_output_function_prologue): Use .cprestore, reverting last patch.
- (mips_encode_section_info): Factor out DECL_RTL accesses. Reverse
- sense of SYMBOL_REF_FLAG for PIC, using binds_local_p to check
- for local symbols.
+ * config/mips/mips-protos.h (mips_simplify_dwarf_addr): Declare.
+ * config/mips/mips.h (TARGET_EXPLICIT_RELOCS, TARGET_NEWABI): New.
+ (ASM_SIMPLIFY_DWARF_ADDR): Define to mips_simplify_dwarf_addr.
+ (EXTRA_CONSTRAINT): Allow symbolic call addresses for TARGET_ABICALLS.
+ * config/mips/mips.md (UNSPEC_HIGH): New constant.
+ (UNSPEC_RELOC_GPREL16): Rename to...
+ (RELOC_GPREL16): ...this.
+ (RELOC_GOT_HI, RELOC_GOT_LO, RELOC_GOT_PAGE, RELOC_GOT_DISP): New.
+ (RELOC_CALL16, RELOC_CALL_HI, RELOC_CALL_LO): New.
+ (macro_calls): New attribute.
+ (length): Use it to set the default length of calls. Don't allow
+ calls to have delay slots if macro_calls is "yes".
+ (luisi, luidi): New patterns.
+ (lowsi, lowdi): Use '%R' to print the relocation.
+ (lowdi_extend): Remove.
+ (loadgp): Remove mode from operand 0. Use '%0' instead of '%a0'.
+ (call_internal): Merge alternatives. Always use "jal".
+ (call_value_internal, call_value_multiple_internal): Likewise.
+ (reloc_gprel16): Remove.
+ * config/mips/mips.c (mips_got_alias_set): New variable.
+ (mips_classify_constant): Handle the new relocation constants.
+ (mips_classify_symbol): Reverse the sense of SYMBOL_REF_FLAG for PIC.
+ (mips_symbolic_address_p): Return false if generating explicit relocs.
+ Otherwise allow local PIC symbols to have an offset.
+ (mips_splittable_symbol_p): New function.
+ (mips_classify_address): Use it to check whether a LO_SUM is valid.
+ (mips_const_insns): Always accept HIGH.
+ (call_insn_operand): Don't accept global symbols if using explicit
+ relocs.
+ (move_operand): Don't accept HIGH when generating PIC.
+ (mips_reloc, mips_lui_reloc): New functions.
+ (mips_force_temporary): Remove MODE argument. Expect VALUE to
+ be a valid right-hand-side for a SET pattern.
+ (mips_load_got, mips_load_got16, mips_load_got32): New functions.
+ (mips_emit_high): New function.
+ (mips_legitimize_symbol): Use mips_reloc for the mips16 gp-relative
+ case. Use mips_splittable_symbol_p to check whether a LO_SUM
+ address should be used. Use mips_emit_high to generate the
+ high part of such an address. Adjust the global symbol + offset
+ case to match the change to mips_force_temprorary.
+ (mips_legitimize_move): Shuffle call to mips_legitimize_symbol.
+ If generating explicit-reloc PIC, load the address of global
+ symbols from the GOT. Use mips_emit_high to emit the high part
+ of an address.
+ (mips_simplify_dwarf_addr): New function.
+ (mips_move_1word): Use lwc1 instead of l.s and swc1 instead of s.s.
+ (mips_move_2words): Likewise ldc1/l.d and sdc1/s.d if TARGET_64BIT.
+ (mips_expand_call): Load the addresses of global functions using
+ %call* relocs if generating explicit-reloc PIC. Don't generate
+ an exception_receiver pattern.
+ (override_options): Initialize mips_got_alias_set.
+ (print_relocation): Remove in favour of...
+ (mips_reloc_string): ...this new function.
+ (print_operand): Handle '%R'. Use mips_reloc_string.
+ (print_operand_address): Use print_operand to print the symbolic
+ part of a LO_SUM address.
+ (mips_output_function_prologue): Use .cprestore, reverting last patch.
+ (mips_encode_section_info): Factor out DECL_RTL accesses. Reverse
+ sense of SYMBOL_REF_FLAG for PIC, using binds_local_p to check
+ for local symbols.
2003-02-02 Eric Christopher <echristo@redhat.com>
* config/mips/mips.c (mips_sign_extend): Remove.
- * config/mips/mips-protos.h: Ditto.
- * config/mips/mips.md (movdi_internal2_extend): Remove.
- (extendsidi2): Fix mode of convert_memory_address.
+ * config/mips/mips-protos.h: Ditto.
+ * config/mips/mips.md (movdi_internal2_extend): Remove.
+ (extendsidi2): Fix mode of convert_memory_address.
2003-01-24 Eric Christopher <echristo@redhat.com>
- * config/mips/mips.md: Rewrite zero_extend* and extend*
- patterns. Use explicit instructions and split after reload
- for register extensions.
- (ashlsi3_internal1_extend): New combiner pattern for
- shift and extend combinations.
- * config/mips/mips.h: Change Pmode back to ptr_mode
- for performance enhancement.
- * combine.c (expand_compound_operation): Make sure
- that zero_extend operation is profitable.
+ * config/mips/mips.md: Rewrite zero_extend* and extend*
+ patterns. Use explicit instructions and split after reload
+ for register extensions.
+ (ashlsi3_internal1_extend): New combiner pattern for
+ shift and extend combinations.
+ * config/mips/mips.h: Change Pmode back to ptr_mode
+ for performance enhancement.
+ * combine.c (expand_compound_operation): Make sure
+ that zero_extend operation is profitable.
2003-01-14 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Make size of stored
- addresses depend on ptr_mode rather than Pmode.
- (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Update acoordingly.
- (INITIALIZE_TRAMPOLINE): Rework to handle Pmode != ptr_mode.
- (CASE_VECTOR_MODE): Use ptr_mode for !TARGET_MIPS16.
- (ASM_OUTPUT_ADDR_VEC_ELT): Update accordingly.
- * config/mips/mips.md (tablejump): Likewise. Remove Pmode
- condition for selecting cpaddsi or cpadddi: use cpadd instead.
- (tablejump_internal1): Remove condition.
- (tablejump_internal2): Change condition to TARGET_64BIT.
- (cpaddsi): Rename to...
- (cpadd): ...this.
- (cpadddi): Remove.
+ * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Make size of stored
+ addresses depend on ptr_mode rather than Pmode.
+ (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Update acoordingly.
+ (INITIALIZE_TRAMPOLINE): Rework to handle Pmode != ptr_mode.
+ (CASE_VECTOR_MODE): Use ptr_mode for !TARGET_MIPS16.
+ (ASM_OUTPUT_ADDR_VEC_ELT): Update accordingly.
+ * config/mips/mips.md (tablejump): Likewise. Remove Pmode
+ condition for selecting cpaddsi or cpadddi: use cpadd instead.
+ (tablejump_internal1): Remove condition.
+ (tablejump_internal2): Change condition to TARGET_64BIT.
+ (cpaddsi): Rename to...
+ (cpadd): ...this.
+ (cpadddi): Remove.
2003-01-09 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips16_constant_after_function_p,
- mips_address_cost, mips_check_split, double_memory_operand,
- mips16_gp_offset, mips16_gp_offset_p, mips16_constant,
- pic_address_needs_scratch, symbolic_operand): Remove declarations.
- (mips_legitimate_address_p): Return bool.
- (mips_address_insns, mips_fetch_insns, mips_const_insns,
- mips_legitimize_address, mips_legitimize_move,
- mips_expand_call): Declare.
- (mips_return_addr): Move outside #ifdef RTX_CODE.
-
- * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): New macro.
- (PIC_FN_ADDR_REG): New reg_class.
- (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add corresponding entries.
- (GR_REG_CLASS_P): True for PIC_FN_ADDR_REG.
- (SMALL_OPERAND, SMALL_OPERAND_UNSIGNED, LUI_OPERAND,
- CONST_HIGH_PART, CONST_LOW_PART, LUI_INT): New macros.
- (SMALL_INT, SMALL_INT_UNSIGNED, CONST_OK_FOR_LETTER_P): Use new macros.
- (EXTRA_CONSTRAINTS): Give new meanings to Q, R and S.
- (CONSTANT_ADDRESS_P): Use mips_legitimate_address_p.
- (LEGITIMATE_PIC_OPERAND): Undefine.
- (LEGITIMATE_CONSTANT_P): Use mips_const_insns.
- (LEGITIMIZE_ADDRESS): Use mips_legitimize_address.
- (CONSTANT_AFTER_FUNCTION_P): Remove definition in #if 0 block.
- (FUNCTION_MODE): Change to SImode.
- (CONST_COSTS): Use mips_const_insns to calculate the cost of
- most constants. Treat const_artih_operands specially if they
- occur in a PLUS or MINUS.
- (CONSTANT_POOL_COST): New macro.
- (RTX_COSTS): Use mips_address_insns for MEMs, with a base cost of 2.
- Add LO_SUM handling.
- (ADDRESS_COST): Undefine.
- (PREDICATE_CODES): Add symbolic_operand and const_arith_operand.
- Add CONST to the list of codes for arith_operand. Add LABEL_REF
- to call_insn_operand and remove CONST_INT.
-
- * config/mips/mips.c: Include integrate.h.
- (SINGLE_WORD_MODE_P): New macro.
- (mips_constant_type, mips_symbol_type, mips_address_type): New enums.
- (mips_constant_info, mips_address_info): New structs.
- (mips_regno_to_class): Map $25 to PIC_FN_ADDR_REG.
- (mips_classify_constant, mips_classify_symbol,
- mips_valid_base_register_p, mips_symbolic_address_p,
- mips_classify_address, mips_symbol_insns,
- mips16_unextended_reference_p, mips_address_insns, mips_const_insns,
- mips_fetch_insns, mips_force_temporary, mips_add_offset,
- mips_legitimize_symbol, mips_legitimize_address, mips_legitimize_move,
- mips_print_relocation): New functions.
- (const_arith_operand): New operand predicate.
- (arith_operand): Use it.
- (mips_const_double_ok, mips16_simple_memory_operand,
- simple_memory_operand, double_memory_operand, mips_check_split,
- mips_address_cost, pic_address_needs_scratch, mips16_gp_offset,
- mips16_gp_offset_p, mips16_output_gp_offset,
+ * config/mips/mips-protos.h (mips16_constant_after_function_p,
+ mips_address_cost, mips_check_split, double_memory_operand,
+ mips16_gp_offset, mips16_gp_offset_p, mips16_constant,
+ pic_address_needs_scratch, symbolic_operand): Remove declarations.
+ (mips_legitimate_address_p): Return bool.
+ (mips_address_insns, mips_fetch_insns, mips_const_insns,
+ mips_legitimize_address, mips_legitimize_move,
+ mips_expand_call): Declare.
+ (mips_return_addr): Move outside #ifdef RTX_CODE.
+
+ * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): New macro.
+ (PIC_FN_ADDR_REG): New reg_class.
+ (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add corresponding entries.
+ (GR_REG_CLASS_P): True for PIC_FN_ADDR_REG.
+ (SMALL_OPERAND, SMALL_OPERAND_UNSIGNED, LUI_OPERAND,
+ CONST_HIGH_PART, CONST_LOW_PART, LUI_INT): New macros.
+ (SMALL_INT, SMALL_INT_UNSIGNED, CONST_OK_FOR_LETTER_P): Use new macros.
+ (EXTRA_CONSTRAINTS): Give new meanings to Q, R and S.
+ (CONSTANT_ADDRESS_P): Use mips_legitimate_address_p.
+ (LEGITIMATE_PIC_OPERAND): Undefine.
+ (LEGITIMATE_CONSTANT_P): Use mips_const_insns.
+ (LEGITIMIZE_ADDRESS): Use mips_legitimize_address.
+ (CONSTANT_AFTER_FUNCTION_P): Remove definition in #if 0 block.
+ (FUNCTION_MODE): Change to SImode.
+ (CONST_COSTS): Use mips_const_insns to calculate the cost of
+ most constants. Treat const_artih_operands specially if they
+ occur in a PLUS or MINUS.
+ (CONSTANT_POOL_COST): New macro.
+ (RTX_COSTS): Use mips_address_insns for MEMs, with a base cost of 2.
+ Add LO_SUM handling.
+ (ADDRESS_COST): Undefine.
+ (PREDICATE_CODES): Add symbolic_operand and const_arith_operand.
+ Add CONST to the list of codes for arith_operand. Add LABEL_REF
+ to call_insn_operand and remove CONST_INT.
+
+ * config/mips/mips.c: Include integrate.h.
+ (SINGLE_WORD_MODE_P): New macro.
+ (mips_constant_type, mips_symbol_type, mips_address_type): New enums.
+ (mips_constant_info, mips_address_info): New structs.
+ (mips_regno_to_class): Map $25 to PIC_FN_ADDR_REG.
+ (mips_classify_constant, mips_classify_symbol,
+ mips_valid_base_register_p, mips_symbolic_address_p,
+ mips_classify_address, mips_symbol_insns,
+ mips16_unextended_reference_p, mips_address_insns, mips_const_insns,
+ mips_fetch_insns, mips_force_temporary, mips_add_offset,
+ mips_legitimize_symbol, mips_legitimize_address, mips_legitimize_move,
+ mips_print_relocation): New functions.
+ (const_arith_operand): New operand predicate.
+ (arith_operand): Use it.
+ (mips_const_double_ok, mips16_simple_memory_operand,
+ simple_memory_operand, double_memory_operand, mips_check_split,
+ mips_address_cost, pic_address_needs_scratch, mips16_gp_offset,
+ mips16_gp_offset_p, mips16_output_gp_offset,
mips16_constant_after_function_p, mips16_constant): Remove.
- (call_insn_operand): Be more fussy about symbolic constants.
- Use register_operand.
- (move_operand): Use mips_symbolic_address_p to check symbolic
- operands and general_operand to check the rest.
- (symbolic_operand): Use mips_classify_constant.
- (mips_legitimate_address_p): Use mips_classify_address.
- (mips_move_1word): Combine handling of symbolic addresses.
- Remove special treatment of gp-relative loads for TARGET_MIPS16.
- (move_move_2words): Likewise. Assume addresses are offsettable
- if they need to refer to more than one word. Add HIGH handling.
- (mips_restore_gp): Use ptr_mode for the GP save slot.
- (mips_expand_call): New function, combining the old mips.md
- call and call_internal define_expands. If the address isn't
- a call_insn_operand, force it into a register. For SVR4 PIC,
- emit an exception_receiver instruction after the call.
- (override_options): Only override flag_pic for TARGET_ABICALLS
- if it is currently zero. Allow mips_split_addresses when
- Pmode == DImode too, except when ABI_HAS_64BIT_SYMBOLS.
- Add new register class letter, 'c'.
- (print_operand): Use mips_classify_constant for constant operands.
- (print_operand_address): Use mips_classify_address.
- (mips_output_function_prologue): Don't use .cprestore.
- (mips_expand_epilogue): For TARGET_MIPS16, only adjust the stack
- via the frame pointer if current_function_calls_eh_return.
- (mips_encode_section_info): For TARGET_ABICALLS, use SYMBOL_REF_FLAG
- to mark whether a symbol is local or global.
- (build_mips16_call_stub): Expect the address of the function rather
- than a MEM reference to it. Update call generation sequences.
- (mips16_optimize_gp): Remove Pmode checks. Temporarily disable
- small-data adjustments.
-
- * config/mips/mips.md: Remove 'R'/'m' memory distinction. Use default
- length for loads and stores.
- (UNSPEC_CPADD, UNSPEC_RELOC_GPREL16): New constants.
- (define_attr type): Add const and prefetch.
- (define_attr length): Use mips_const_insns for const instructions.
- Use mips_fetch_insns for load and store instructions.
- (define_attr single_insn): New.
- (define_attr can_delay): Use it.
- (define_attr abicalls): Remove.
- (define_delay): Use can_delay. Always allow calls to have delay slots.
- (addsi3_internal_2): Add 'Q' constraint.
- (movsi_ulw, movsi_usw, movdi_uld, movdi_usd): Set length to 8.
- (high): Remove.
- (lowsi): Renamed from low.
- (lowdi): New pattern.
- (movdi, movsi): Use mips_legitimize_move. Remove define_split.
- (lwxc1, ldxc1, swxc1, sdxc1): Set length to 4.
- (loadgp): Change operand 0 to an immediate_operand.
- (tablejump): Use the same patterns for SVR4 PIC but emit a cpadd
- beforehand.
- (cpaddsi, cpadddi): New patterns.
- (tablejump_internal3, tablejump_internal4): Remove define_expands
- and associated define_splits.
- (call, call_value): Use mips_expand_call.
- (call_internal): New, replacing all existing call_internal* insns.
- (call_value_internal): Likewise call_value_internal*.
- (call_value_multiple_internal): Likewise call_value_multiple_internal*.
- (untyped_call): Remove if (operands[0]) magic.
- (prefetch_si_address, prefetch_si): Change type to "prefetch".
- (prefetch_di_address, prefetch_di): Likewise.
- (leasi, leadi): Remove.
- (reloc_gprel16): New.
-
- * config/mips/5400.md (ir_vr54_hilo): Include const type.
- * config/mips/5500.md (ir_vr55_hilo): Likewise.
- * config/mips/sr71k.md (ir_sr70_hilo): Likewise.
+ (call_insn_operand): Be more fussy about symbolic constants.
+ Use register_operand.
+ (move_operand): Use mips_symbolic_address_p to check symbolic
+ operands and general_operand to check the rest.
+ (symbolic_operand): Use mips_classify_constant.
+ (mips_legitimate_address_p): Use mips_classify_address.
+ (mips_move_1word): Combine handling of symbolic addresses.
+ Remove special treatment of gp-relative loads for TARGET_MIPS16.
+ (move_move_2words): Likewise. Assume addresses are offsettable
+ if they need to refer to more than one word. Add HIGH handling.
+ (mips_restore_gp): Use ptr_mode for the GP save slot.
+ (mips_expand_call): New function, combining the old mips.md
+ call and call_internal define_expands. If the address isn't
+ a call_insn_operand, force it into a register. For SVR4 PIC,
+ emit an exception_receiver instruction after the call.
+ (override_options): Only override flag_pic for TARGET_ABICALLS
+ if it is currently zero. Allow mips_split_addresses when
+ Pmode == DImode too, except when ABI_HAS_64BIT_SYMBOLS.
+ Add new register class letter, 'c'.
+ (print_operand): Use mips_classify_constant for constant operands.
+ (print_operand_address): Use mips_classify_address.
+ (mips_output_function_prologue): Don't use .cprestore.
+ (mips_expand_epilogue): For TARGET_MIPS16, only adjust the stack
+ via the frame pointer if current_function_calls_eh_return.
+ (mips_encode_section_info): For TARGET_ABICALLS, use SYMBOL_REF_FLAG
+ to mark whether a symbol is local or global.
+ (build_mips16_call_stub): Expect the address of the function rather
+ than a MEM reference to it. Update call generation sequences.
+ (mips16_optimize_gp): Remove Pmode checks. Temporarily disable
+ small-data adjustments.
+
+ * config/mips/mips.md: Remove 'R'/'m' memory distinction. Use default
+ length for loads and stores.
+ (UNSPEC_CPADD, UNSPEC_RELOC_GPREL16): New constants.
+ (define_attr type): Add const and prefetch.
+ (define_attr length): Use mips_const_insns for const instructions.
+ Use mips_fetch_insns for load and store instructions.
+ (define_attr single_insn): New.
+ (define_attr can_delay): Use it.
+ (define_attr abicalls): Remove.
+ (define_delay): Use can_delay. Always allow calls to have delay slots.
+ (addsi3_internal_2): Add 'Q' constraint.
+ (movsi_ulw, movsi_usw, movdi_uld, movdi_usd): Set length to 8.
+ (high): Remove.
+ (lowsi): Renamed from low.
+ (lowdi): New pattern.
+ (movdi, movsi): Use mips_legitimize_move. Remove define_split.
+ (lwxc1, ldxc1, swxc1, sdxc1): Set length to 4.
+ (loadgp): Change operand 0 to an immediate_operand.
+ (tablejump): Use the same patterns for SVR4 PIC but emit a cpadd
+ beforehand.
+ (cpaddsi, cpadddi): New patterns.
+ (tablejump_internal3, tablejump_internal4): Remove define_expands
+ and associated define_splits.
+ (call, call_value): Use mips_expand_call.
+ (call_internal): New, replacing all existing call_internal* insns.
+ (call_value_internal): Likewise call_value_internal*.
+ (call_value_multiple_internal): Likewise call_value_multiple_internal*.
+ (untyped_call): Remove if (operands[0]) magic.
+ (prefetch_si_address, prefetch_si): Change type to "prefetch".
+ (prefetch_di_address, prefetch_di): Likewise.
+ (leasi, leadi): Remove.
+ (reloc_gprel16): New.
+
+ * config/mips/5400.md (ir_vr54_hilo): Include const type.
+ * config/mips/5500.md (ir_vr55_hilo): Likewise.
+ * config/mips/sr71k.md (ir_sr70_hilo): Likewise.
2003-01-08 Eric Christopher <echristo@redhat.com>
- * config.gcc (mipsisa32*): Change ABI_MEABI to ABI_EABI.
- * config/mips/elf.h (STARTFILE_SPEC): Remove ABI_MEABI references and
- configure check for libgloss.
- * config/mips/elf64.h: Ditto.
- * config/mips/mips.c: Remove ABI_MEABI.
- * config/mips/mips.h: Ditto.
+ * config.gcc (mipsisa32*): Change ABI_MEABI to ABI_EABI.
+ * config/mips/elf.h (STARTFILE_SPEC): Remove ABI_MEABI references and
+ configure check for libgloss.
+ * config/mips/elf64.h: Ditto.
+ * config/mips/mips.c: Remove ABI_MEABI.
+ * config/mips/mips.h: Ditto.
2002-11-05 Richard Sandiford <rsandifo@redhat.com>
- Fix merge fallout.
- * config/mips/mips.md (mul_acc_si): Reapply 2002-10-16 change.
- (muldi3_internal): Remove outdated comment.
- (*muls_di, *umuls_di): Fix comment and 64-bitness.
- (*smsac_di, *umsac_di): Likewise. Reformat.
- (umulsi3_highpart): Minor formatting tweaks.
- (umulsi3_highpart_internal): Use only if !ISA_HAS_MULHI. Remove
- redundant scratch operand. Minor formatting tweak.
- (umulsi3_highpart_mulhi_internal): Use for !TARGET_64BIT as well.
- (umulsi3_highpart_neg_mulhi_internal): Likewise. Fix asm template.
- (smulsi3_highpart): As for the unsigned version.
- (smulsi3_highpart_internal): Likewise.
- (smulsi3_highpart_mulhi_internal): Likewise.
- (smulsi3_highpart_neg_mulhi_internal): Likewise.
- (smuldi3_highpart, umuldi3_highpart): Minor formatting tweaks.
- (*smul_acc_di): Remove duplicated pattern.
- (*umul_acc_di, *smul_acc_di): Reapply 2002-10-16 change.
- (anddi3) [unnamed mips16 pattern]: Remove reintroduced length.
- (zero_extendsidi2_internal2): Remove new, but commented-out pattern.
+ Fix merge fallout.
+ * config/mips/mips.md (mul_acc_si): Reapply 2002-10-16 change.
+ (muldi3_internal): Remove outdated comment.
+ (*muls_di, *umuls_di): Fix comment and 64-bitness.
+ (*smsac_di, *umsac_di): Likewise. Reformat.
+ (umulsi3_highpart): Minor formatting tweaks.
+ (umulsi3_highpart_internal): Use only if !ISA_HAS_MULHI. Remove
+ redundant scratch operand. Minor formatting tweak.
+ (umulsi3_highpart_mulhi_internal): Use for !TARGET_64BIT as well.
+ (umulsi3_highpart_neg_mulhi_internal): Likewise. Fix asm template.
+ (smulsi3_highpart): As for the unsigned version.
+ (smulsi3_highpart_internal): Likewise.
+ (smulsi3_highpart_mulhi_internal): Likewise.
+ (smulsi3_highpart_neg_mulhi_internal): Likewise.
+ (smuldi3_highpart, umuldi3_highpart): Minor formatting tweaks.
+ (*smul_acc_di): Remove duplicated pattern.
+ (*umul_acc_di, *smul_acc_di): Reapply 2002-10-16 change.
+ (anddi3) [unnamed mips16 pattern]: Remove reintroduced length.
+ (zero_extendsidi2_internal2): Remove new, but commented-out pattern.
2002-10-22 Eric Christopher <echristo@redhat.com>
- * config/mips/mips-protos.h (mips_return_addr): New.
- * config/mips/mips.c (mips_return_addr): New.
- (movdi_operand): Remove.
- (se_register_operand): Ditto.
- (se_reg_or_0_operand): Ditto.
- (se_uns_arith_operand): Ditto.
- (se_arith_operand): Ditto.
- (se_nonmemory_operand): Ditto.
- (extend_operator): Ditto.
- (highpart_shift_operator): Ditto.
- (mips_initial_elimination_offset): Remove return address pointer
- elimination.
- (mips_reg_names): Remove $ra.
- (mips_regno_to_class): Ditto.
- * config/mips/mips.h (POINTER_SIZE): Define based on TARGET_LONG64
- and TARGET_64BIT.
- (POINTER_BOUNDARY): Remove.
- (POINTERS_EXTEND_UNSIGNED): Define to 0.
- (PROMOTE_MODE): Promote to Pmode.
- (SHORT_IMMEDIATES_SIGN_EXTEND): Define.
- (Pmode): Define to TARGET_64BIT.
- (FUNCTION_MODE): Define as Pmode.
- (mips_args): Remove deleted functions.
- (SIZE_TYPE): Depend on POINTER_SIZE.
- (PTRDIFF_TYPE): Ditto.
- (FIXED_REGISTERS): Fix extra registers.
- (CALL_USED_REGISTERS): Ditto.
- (CALL_REALLY_USED_REGISTERS): Ditto.
- (RAP_REG_NUM): Remove.
- (RETURN_ADDRESS_POINTER_REGNUM): Ditto.
- (RETURN_ADDR_RTX): Define to mips_return_addr.
- (ELIMINABLE_REGS): Remove RETURN_ADDRESS_POINTER_REGNUM.
- (CAN_ELIMINATE): Ditto.
- * config/mips/mips.md: For DImode patterns, take into account
- deletions above. Split mulsidi patterns into sign_extend and
- zero_extend.
+ * config/mips/mips-protos.h (mips_return_addr): New.
+ * config/mips/mips.c (mips_return_addr): New.
+ (movdi_operand): Remove.
+ (se_register_operand): Ditto.
+ (se_reg_or_0_operand): Ditto.
+ (se_uns_arith_operand): Ditto.
+ (se_arith_operand): Ditto.
+ (se_nonmemory_operand): Ditto.
+ (extend_operator): Ditto.
+ (highpart_shift_operator): Ditto.
+ (mips_initial_elimination_offset): Remove return address pointer
+ elimination.
+ (mips_reg_names): Remove $ra.
+ (mips_regno_to_class): Ditto.
+ * config/mips/mips.h (POINTER_SIZE): Define based on TARGET_LONG64
+ and TARGET_64BIT.
+ (POINTER_BOUNDARY): Remove.
+ (POINTERS_EXTEND_UNSIGNED): Define to 0.
+ (PROMOTE_MODE): Promote to Pmode.
+ (SHORT_IMMEDIATES_SIGN_EXTEND): Define.
+ (Pmode): Define to TARGET_64BIT.
+ (FUNCTION_MODE): Define as Pmode.
+ (mips_args): Remove deleted functions.
+ (SIZE_TYPE): Depend on POINTER_SIZE.
+ (PTRDIFF_TYPE): Ditto.
+ (FIXED_REGISTERS): Fix extra registers.
+ (CALL_USED_REGISTERS): Ditto.
+ (CALL_REALLY_USED_REGISTERS): Ditto.
+ (RAP_REG_NUM): Remove.
+ (RETURN_ADDRESS_POINTER_REGNUM): Ditto.
+ (RETURN_ADDR_RTX): Define to mips_return_addr.
+ (ELIMINABLE_REGS): Remove RETURN_ADDRESS_POINTER_REGNUM.
+ (CAN_ELIMINATE): Ditto.
+ * config/mips/mips.md: For DImode patterns, take into account
+ deletions above. Split mulsidi patterns into sign_extend and
+ zero_extend.
2002-10-16 Richard Sandiford <rsandifo@redhat.com>
- Michael Meissner <meissner@redhat.com>
-
- * config/mips/mips.h (ISA_HAS_MACC): True for normal-mode vr4120 code.
- * config/mips/mips.md (mulsi3_mult3): Add a define_peephole2 to
- mop up unnecessarly moves through LO.
- (*mul_acc_si): Remove vr5400 and vr5500 handling from here.
- (*macc): New pattern for ISA_HAS_MACC. Add define_peephole2s to
- change mtlo/macc sequences into mul/add sequences when a three-
- address mul is available.
- (*macc2): New pattern. Add a define_peephole2 to generate it.
- (*mul_sub_si): Fix contraint for operand 5.
- (*muls): Use in 32-bit code as well.
- (*msac): Likewise. Use msub instead of msac in vr5500 code
- if the destination is LO. Remove duplicate define_split.
- (*muls_di): Use only in 32-bit code. Adjust rtl accordingly.
- (*msac_di): Likewise. Fix formatting.
- (smulsi3_highpart, umulsi3_highpart): Use mulhi in 32-bit code too.
- (*xmulsi3_highpart_internal): Use only if !ISA_HAS_MULHI.
- (*xmulsi3_highpart_mulhi): Use even if !TARGET_64BIT.
- (*xmulsi3_neg_highpart_mulhi): Likewise.
- (*mul_acc_64bit_di): Remove.
- (*mul_acc_di): Use only in 32-bit code. Handle ISA_HAS_MACC as well.
+ Michael Meissner <meissner@redhat.com>
+
+ * config/mips/mips.h (ISA_HAS_MACC): True for normal-mode vr4120 code.
+ * config/mips/mips.md (mulsi3_mult3): Add a define_peephole2 to
+ mop up unnecessarly moves through LO.
+ (*mul_acc_si): Remove vr5400 and vr5500 handling from here.
+ (*macc): New pattern for ISA_HAS_MACC. Add define_peephole2s to
+ change mtlo/macc sequences into mul/add sequences when a three-
+ address mul is available.
+ (*macc2): New pattern. Add a define_peephole2 to generate it.
+ (*mul_sub_si): Fix contraint for operand 5.
+ (*muls): Use in 32-bit code as well.
+ (*msac): Likewise. Use msub instead of msac in vr5500 code
+ if the destination is LO. Remove duplicate define_split.
+ (*muls_di): Use only in 32-bit code. Adjust rtl accordingly.
+ (*msac_di): Likewise. Fix formatting.
+ (smulsi3_highpart, umulsi3_highpart): Use mulhi in 32-bit code too.
+ (*xmulsi3_highpart_internal): Use only if !ISA_HAS_MULHI.
+ (*xmulsi3_highpart_mulhi): Use even if !TARGET_64BIT.
+ (*xmulsi3_neg_highpart_mulhi): Likewise.
+ (*mul_acc_64bit_di): Remove.
+ (*mul_acc_di): Use only in 32-bit code. Handle ISA_HAS_MACC as well.
2002-10-14 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/vr.h (DRIVER_SELF_SPECS): Define.
- * config/mips/t-vr (MULTILIB_OPTIONS): Remove mlong32.
- (MULTILIB_DIRNAMES): Remove long32.
- (MULTILIB_EXCEPTIONS): Don't build -mabi=32 -mgp32 multilibs.
- (MULTILIB_REDUNDANT_DIRS): Remove.
+ * config/mips/vr.h (DRIVER_SELF_SPECS): Define.
+ * config/mips/t-vr (MULTILIB_OPTIONS): Remove mlong32.
+ (MULTILIB_DIRNAMES): Remove long32.
+ (MULTILIB_EXCEPTIONS): Don't build -mabi=32 -mgp32 multilibs.
+ (MULTILIB_REDUNDANT_DIRS): Remove.
2002-10-14 Richard Sandiford <rsandifo@redhat.com>
- * doc/tm.texi (DRIVER_SELF_SPECS): Document.
- * gcc.c (driver_self_specs): New variable.
- (do_self_spec): New function.
- (main): Use it to process driver_self_specs.
+ * doc/tm.texi (DRIVER_SELF_SPECS): Document.
+ * gcc.c (driver_self_specs): New variable.
+ (do_self_spec): New function.
+ (main): Use it to process driver_self_specs.
2002-10-09 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.md (one_cmpldi2): Use only if TARGET_64BIT.
- Remove DImode define_split for !TARGET_64BIT.
- (anddi3): Remove !TARGET_64BIT support from here as well.
- Change operand 2's predicate to se_uns_arith_operand.
- Add constant alternatives to define_insn.
- (iordi3, xordi3, *nordi3): Likewise.
- (anddi3_internal1, xordi3_immed): Remove.
+ * config/mips/mips.md (one_cmpldi2): Use only if TARGET_64BIT.
+ Remove DImode define_split for !TARGET_64BIT.
+ (anddi3): Remove !TARGET_64BIT support from here as well.
+ Change operand 2's predicate to se_uns_arith_operand.
+ Add constant alternatives to define_insn.
+ (iordi3, xordi3, *nordi3): Likewise.
+ (anddi3_internal1, xordi3_immed): Remove.
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.h (PROCESSOR_R4121): Rename to PROCESSOR_R4120.
- (TARGET_MIPS4121): Rename to TARGET_MIPS4120.
- * config/mips/mips.c (mips_cpu_info): Rename vr4121 to vr4120.
- * config/mips/mips.md: Apply same renaming here.
+ * config/mips/mips.h (PROCESSOR_R4121): Rename to PROCESSOR_R4120.
+ (TARGET_MIPS4121): Rename to TARGET_MIPS4120.
+ * config/mips/mips.c (mips_cpu_info): Rename vr4121 to vr4120.
+ * config/mips/mips.md: Apply same renaming here.
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (PROCESSOR_R4320, TARGET_MIPS4320): Remove.
- (GENERATE_MULT3_SI): Remove use of TARGET_MIPS4320.
- * config/mips/mips.c (mips_cpu_info): Remove vr4320 entry.
- * config/mips/mips.md (define_attr cpu): Remove r4320.
- Remove vr4320 scheduler and uses of TARGET_MIPS4320.
+ * config/mips/mips.c (PROCESSOR_R4320, TARGET_MIPS4320): Remove.
+ (GENERATE_MULT3_SI): Remove use of TARGET_MIPS4320.
+ * config/mips/mips.c (mips_cpu_info): Remove vr4320 entry.
+ * config/mips/mips.md (define_attr cpu): Remove r4320.
+ Remove vr4320 scheduler and uses of TARGET_MIPS4320.
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.c (mips16_strings): New variable.
- (mips_output_function_epilogue): Clear the SYMBOL_REF_FLAG of every
- symbol in mips16_strings. Free the list.
- (mips_encode_section_info): Keep track of local strings.
+ * config/mips/mips.c (mips16_strings): New variable.
+ (mips_output_function_epilogue): Clear the SYMBOL_REF_FLAG of every
+ symbol in mips16_strings. Free the list.
+ (mips_encode_section_info): Keep track of local strings.
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips.md (bunge, bltgt, bungt): New define_expands.
- (sordered_df, sordered_sf): Remove.
- * config/mips/mips.c (get_float_compare_codes): New fn.
- (gen_int_relational, gen_conditional_move): Use it.
+ * config/mips/mips.md (bunge, bltgt, bungt): New define_expands.
+ (sordered_df, sordered_sf): Remove.
+ * config/mips/mips.c (get_float_compare_codes): New fn.
+ (gen_int_relational, gen_conditional_move): Use it.
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
- * config/mips/mips-protos.h (mips_emit_fcc_reload): Declare.
- * config/mips/mips.h (PREDICATE_CODES): Add fcc_register_operand.
- * config/mips/mips.c (fcc_register_operand): New function.
- (mips_emit_fcc_reload): New function, extracted from reload_incc.
- (override_options): Allow TFmode values in float registers
- if ISA_HAS_8CC.
- * cnfig/mips/mips.md (reload_incc): Change destination prediate
- to fcc_register_operand. Remove misleading source constraint.
- Use mips_emit_fcc_reload.
+ * config/mips/mips-protos.h (mips_emit_fcc_reload): Declare.
+ * config/mips/mips.h (PREDICATE_CODES): Add fcc_register_operand.
+ * config/mips/mips.c (fcc_register_operand): New function.
+ (mips_emit_fcc_reload): New function, extracted from reload_incc.
+ (override_options): Allow TFmode values in float registers
+ if ISA_HAS_8CC.
+ * cnfig/mips/mips.md (reload_incc): Change destination prediate
+ to fcc_register_operand. Remove misleading source constraint.
+ Use mips_emit_fcc_reload.
(reload_outcc): Duplicate reload_incc.
2003-04-29 Aldy Hernandez <aldyh@redhat.com>
- * expr.c (emit_group_load): Dump parallels of simd types to
- memory.
+ * expr.c (emit_group_load): Dump parallels of simd types to
+ memory.
2003-04-29 Vladimir Makarov <vmakarov@redhat.com>