gcc/config
Richard Sandiford 08d0963a0e configure.ac (mips*-*-*linux*, [...]): Use mt-mips-gnu.
* configure.ac (mips*-*-*linux*, mips*-*-gnu*): Use mt-mips-gnu.
	* configure: Regenerate.

config/
	* mt-mips16-compat: New file, taken from mt-mips-elfoabi.
	* mt-mips-elfoabi: Include mt-mips16-compat.
	* mt-mips-gnu: New file.

gcc/
	* config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
	mips/t-libgcc-mips16 to tmake_file.
	* config/mips/mips-protos.h (mips_call_type): New enum.
	(mips_pic_base_register, mips_got_load): Declare.
	(mips_restore_gp): Take an rtx argument.
	(mips_use_pic_fn_addr_reg_p): Declare.
	(mips_expand_call): Replace the sibcall_p argument with
	a mips_call_type argument.  Add a lazy_p parameter.
	(mips_split_call): Declare.
	* config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
	(MIPS16_PIC_TEMP): Likewise.
	(reg_class): Delete M16_NA_REGS.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
	(SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
	(mips_split_hi_p): Declare.
	* config/mips/mips.c (mips_split_hi_p): New array.
	(mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
	(mips_got_symbol_type_p): New function.
	(mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
	(mips16_stub_function_p): New function.
	(mips16_local_function_p): Likewise.
	(mips_use_pic_fn_addr_reg_p): Likewise.
	(mips_cannot_force_const_mem): Return false for HIGHs.
	Extend CONST_INT and symbolic handling to MIPS16, using
	mips_symbol_insns to check that the base symbol type is a
	legitimate constant.  Reject GOT-based constants if
	TARGET_MIPS16_PCREL_LOADS.
	(mips_const_insns): Check targetm.cannot_force_const_mem when
	decomposing a symbolic base and a large offset.
	(mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
	When calling a function that needs $25 from MIPS16 code,
	move the target address into $25 separately and add a USE
	to the call insn.
	(mips16_gp_pseudo_reg): Insert the initializer immediately
	before the first real insn.
	(mips_pic_base_register, mips_got_load): New functions.
	(mips_split_symbol): Generalize the name of the LO_SUM_OUT
	parameter to LOW_OUT.  Say that it can be any valid SET_SRC
	when splitting a load-address operation.  Split SYMBOL_GOT_DISP
	constants and highs of SYMBOL_GOT_PAGE_OFST constants.
	(mips_call_tls_get_addr): Update the call to mips_expand_call,
	also passing NULL_RTX rather than const0_rtx as the aux argument.
	(mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
	instead of TARGET_EXPLICIT_RELOCS.
	(mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
	(mips_load_call_address): Replace the sibcall_p argument with
	a mips_call_type argument.  Use mips_got_load.
	(mips16_local_alias): New structure.
	(mips16_local_aliases): New variable.
	(mips16_local_aliases_hash): New function.
	(mips16_local_aliases_eq): Likewise.
	(mips16_local_alias): Likewise.
	(mips16_stub_function): Likewise.
	(mips16_build_function_stub): Create a local alias for the target
	function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
	.cpload directive and an R_MIPS_NONE relocation for the target
	function, then load the alias rather than the function itself.
	Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
	(mips16_copy_fpr_return_value): Use mips16_stub_function and
	mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
	(mips16_build_call_stub): Replace the FN parameter with an
	FN_PTR parameter.  Force the address into a register if it
	isn't a call_insn_operand; don't rely on the caller to do this.
	If a call to a locally-defined and locally-binding MIPS16
	function must be made indirectly, redirect the call to the
	function's local alias.  Use mips16_stub_function_p,
	mips16_stub_function, mips_expand_call and use_reg.
	Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
	Use explicit %hi and %lo accesses where possible.
	Use MIPS_CALL to generate the correct code form of a
	jal instruction.  Add clobbers of $18 instead of uses.
	Update the call to mips_emit_call_insn.
	(mips_expand_call): Replace the SIBCALL_P argument with a
	mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
	Take a LAZY_P parameter.  Call mips16_build_call_stub first,
	allowing it to modify the call address.  Update the calls to
	mips_load_call_address and mips_emit_call_insn.
	(mips_split_call): New function.
	(mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
	!TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
	SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
	(mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
	(mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
	if TARGET_MIPS16.
	(mips_cprestore_slot): New function.
	(mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
	and use mips_cprestore_slot.
	(mips_output_function_prologue): Handle TARGET_MIPS16 for
	LOADGP_OLDABI.
	(mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
	then use a copygp_mips16 instruction to set up $28.
	(mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
	(mips16_lay_out_constants): Call split_all_insns_noflow.
	(mips_reorg_process_insns): Explicitly set all_noreorder_p to
	false if TARGET_MIPS16.
	(mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
	(mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
	mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
	(mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
	MIPS16 code.  Allow MIPS16 o32 PIC.
	(mips_override_options): Allow MIPS16 o32 PIC.
	* config/mips/mips.md: Lower CONST_GP_P moves into register moves
	after reload if TARGET_USE_GOT.
	(UNSPEC_COPYGP): New constant.
	(length): Use a default length of 8 for MIPS16 GOT loads.
	(*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
	(*got_page<mode>): Check mips_split_hi_p.
	(*got_disp<mode>, *got_page<mode>): Use mips_got_load.
	(unspec_got<mode>, unspec_call<mode>): New expanders.
	(load_got<mode>, load_call<mode>): Remove the length attributes.
	Use a got attribute instead of a type attribute.
	(copygp_mips16): New insn.
	(restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
	(load_call<mode>): Use a "d" constraint instead of an "r" constraint.
	(sibcall, sibcall_value, call, call_value): Update the calls
	to mips_expand_call.
	(call_internal, call_value_internal): Use mips_split_call.
	(call_value_multiple_internal): Likewise.
	(call_split): Move after call_internal (the insn it is split from).
	(call_internal_direct, call_value_internal_direct): Turn into
	define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
	(call_direct_split, call_value_direct_split): New patterns.
	* config/mips/constraints.md (c): Handle TARGET_MIPS16 first
	and use M16_REGS instead of M16_NA_REGS.
	* config/mips/predicates.md (const_call_insn_operand): Replace
	the TARGET_ABSOLUTE_ABICALLS-based check with a more general
	mips_use_pic_fn_addr_reg_p check.
	(move_operand): Reject HIGHs if mips_split_hi_p.
	* config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
	(__mips16_floatunsisf): Inline __mips16_floatsisf.
	(CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
	* config/mips/libgcc-mips16.ver: New file.
	* config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
	$(srcdir)/config/mips/libgcc-mips16.ver.

gcc/testsuite/
	* lib/target-supports.exp (check_profiling_available): Return false
	for -p and -pg on MIPS16 targets.

From-SVN: r138912
2008-08-09 19:08:15 +00:00
..
ChangeLog configure.ac (mips*-*-*linux*, [...]): Use mt-mips-gnu. 2008-08-09 19:08:15 +00:00
acinclude.m4 config: sync with src 2008-07-30 14:57:07 +00:00
acx.m4 re PR ada/36001 ($(GNATMAKE) not defined with 'cd gcc && make') 2008-05-12 16:25:07 +00:00
codeset.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
depstand.m4 depstand.m4 (ZW_CREATE_DEPDIR): Use mkinstalldirs to make directory. 2007-01-27 19:50:38 +00:00
enable.m4 enable.m4: New file. 2005-09-23 16:33:47 +00:00
extensions.m4 extensions.m4: New. 2008-03-27 09:46:19 +00:00
futex.m4 configure.ac (--enable-linux-futex): Add new configure option. 2008-01-08 17:14:49 +01:00
gettext-sister.m4 Richard Earnshaw <rearnsha@arm.com> 2006-06-13 08:00:45 +00:00
gettext.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
glibc21.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
gxx-include-dir.m4 re PR libgcj/28426 (libgcj header files installed in wrong location in cross build) 2006-07-21 20:49:06 +00:00
iconv.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
intdiv0.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
inttypes-pri.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
inttypes.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
inttypes_h.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
lcmessage.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
ld-symbolic.m4 ld-symbolic.m4: New. 2007-01-14 07:38:18 -08:00
lead-dot.m4 all files: Update FSF address. 2005-07-16 02:40:16 +00:00
lib-ld.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
lib-link.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
lib-prefix.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
mh-cxux configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-cygwin * mh-cygwin: Don't build libtermcap if it doesn't exist. 2002-12-17 02:58:05 +00:00
mh-decstation mh-a68bsd: clean out dead code 2002-04-19 13:26:08 -04:00
mh-dgux386 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-djgpp * config/mh-djgpp: do not set CFLAGS. 2001-01-02 10:46:33 -05:00
mh-interix configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-lynxrs6k configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-mingw mh-mingw (LDFLAGS): Append to rather than replacing previous value. 2008-07-11 12:15:07 +01:00
mh-ncr3000 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-necv4 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-pa configure.ac: Add makefile fragments for hpux. 2008-07-30 12:17:17 +00:00
mh-pa-hpux10 configure.ac: Add makefile fragments for hpux. 2008-07-30 12:17:17 +00:00
mh-ppc-aix mh-ppc-aix: Add default ADAFLAGS to BOOT_ADAFLAGS. 2007-06-04 07:48:28 +00:00
mh-ppc-darwin * mh-ppc-darwin (BOOT_CFLAGS): Use +=, not =. 2008-02-20 16:31:19 +01:00
mh-sco configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-solaris configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-sysv4 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-sysv5 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mh-x86omitfp re PR target/32622 (BOOT_CFLAGS is not passed to stage2 and stage3 compile) 2007-07-05 20:26:10 +00:00
mt-alphaieee configure.in (target_makefile_frag): Use mt-alphaieee. 2001-01-27 22:59:00 -08:00
mt-d30v merge with /cvs/src 2000-07-21 01:44:02 -04:00
mt-gnu Makefile.tpl (DEBUG_PREFIX_CFLAGS_FOR_TARGET): New. 2007-08-18 16:15:39 +01:00
mt-mep sync config directory with src 2007-02-10 12:44:12 +00:00
mt-mips-elfoabi configure.ac (mips*-*-*linux*, [...]): Use mt-mips-gnu. 2008-08-09 19:08:15 +00:00
mt-mips-gnu configure.ac (mips*-*-*linux*, [...]): Use mt-mips-gnu. 2008-08-09 19:08:15 +00:00
mt-mips16-compat configure.ac (mips*-*-*linux*, [...]): Use mt-mips-gnu. 2008-08-09 19:08:15 +00:00
mt-netware Initial revision 1997-08-21 18:57:35 -04:00
mt-ospace Add mt-ospace 1998-04-28 04:33:46 +00:00
mt-sde mt-sde (CFLAGS_FOR_TARGET, [...]): Use +=, not =. 2007-12-06 17:42:48 +00:00
mt-spu mt-spu (all-ld): Update for ld Makefile changes. 2008-08-03 13:07:55 +09:30
mt-v810 configure.in: Convert to autoconf script. 2002-12-28 06:57:50 +00:00
mt-wince Add support for sh-pe and arm-wince-pe targets. 2000-02-23 01:25:56 +00:00
multi.m4 Index: config/ChangeLog 2006-10-15 07:42:57 +00:00
nls.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
no-executables.m4 no-executables.m4 (GCC_TRY_COMPILE_OR_LINK): New function. 2007-10-03 14:16:57 +00:00
override.m4 Makefile.tpl ($(srcdir)/configure): Update dependencies. 2008-06-17 23:13:35 +00:00
po.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
proginstall.m4 configure.ac: m4_include config/proginstall.m4. 2008-03-16 08:19:08 +00:00
progtest.m4 Makefile.tpl (configure-gcc): Depend on maybe-configure-intl. 2003-07-08 05:55:11 +00:00
stdint.m4 configure: Regenerate. 2007-04-12 13:06:43 +00:00
stdint_h.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
tcl.m4 tcl.m4 (SC_PATH_TCLCONFIG): Add some simple logic to deal with cygwin. 2008-08-02 22:56:04 +00:00
tls.m4 tls.m4: Fix typos. 2008-06-11 11:57:11 +02:00
uintmax_t.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
ulonglong.m4 gettext-sister.m4: Renamed from gettext.m4 2004-09-22 23:53:59 +00:00
unwind_ipinfo.m4 re PR target/26792 (need to use autoconf when using newly-added libgcc functions) 2006-07-21 21:07:15 +00:00
warnings.m4 warnings.m4: Use m4_expand_once to clear the AC_SUBST'ed variable. 2007-01-11 15:21:53 +00:00