OSDN Git Service

* configure.ac (mipsisa*-*-elfoabi*): New stanza.
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Sep 2007 20:01:34 +0000 (20:01 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Sep 2007 20:01:34 +0000 (20:01 +0000)
* configure: Regenerate.

config/
* mt-mips-elfoabi: New file.

gcc/
* doc/invoke.texi (-minterlink-mips16): Document.
* config/mips/mips.opt (minterlink-mips16): New option.
* config/mips/mips.c (mips_function_ok_for_sibcall): Handle
-minterlink-mips16

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128625 138bc75d-0d04-0410-961f-82ee72b054a4

ChangeLog
config/ChangeLog
config/mt-mips-elfoabi [new file with mode: 0644]
configure
configure.ac
gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.opt
gcc/doc/invoke.texi

index e57e59d..a3a0df8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+       * configure.ac (mipsisa*-*-elfoabi*): New stanza.
+       * configure: Regenerate.
+
 2007-09-20  Paul Jarc  <prj-bugzilla-gcc@multivac.cwru.edu>
 
        PR bootstrap/31906
index faf4d3c..868e0e8 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+       * mt-mips-elfoabi: New file.
+
 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
 
        * mt-sde (CFLAGS_FOR_TARGET): Add -mno-gpopt.
diff --git a/config/mt-mips-elfoabi b/config/mt-mips-elfoabi
new file mode 100644 (file)
index 0000000..49c8ecd
--- /dev/null
@@ -0,0 +1,6 @@
+# The *-elfoabi configurations are intended to be usable for both
+# MIPS16 and non-MIPS16 code, but the libraries are all non-MIPS16.
+# Add -minterlink-mips16 so that the libraries can be used with both
+# ISA modes.
+CFLAGS_FOR_TARGET = -minterlink-mips16
+CXXFLAGS_FOR_TARGET = -minterlink-mips16
index 4e7747d..eca027f 100755 (executable)
--- a/configure
+++ b/configure
@@ -5279,6 +5279,9 @@ case "${target}" in
   mips*-sde-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
+  mipsisa*-*-elfoabi*)
+    target_makefile_frag="config/mt-mips-elfoabi"
+    ;;
   *-*-netware*)
     target_makefile_frag="config/mt-netware"
     ;;
index 6e490fc..1496347 100644 (file)
@@ -1798,6 +1798,9 @@ case "${target}" in
   mips*-sde-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
+  mipsisa*-*-elfoabi*)
+    target_makefile_frag="config/mt-mips-elfoabi"
+    ;;
   *-*-netware*)
     target_makefile_frag="config/mt-netware"
     ;;
index a3854f3..72df51a 100644 (file)
@@ -1,3 +1,10 @@
+2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+       * doc/invoke.texi (-minterlink-mips16): Document.
+       * config/mips/mips.opt (minterlink-mips16): New option.
+       * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
+       -minterlink-mips16
+
 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
 
        * doc/extend.texi (Attribute Syntax): Remove old speculative
index 7f959f4..f2c8ba9 100644 (file)
@@ -4256,6 +4256,17 @@ mips_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
   if (mips_use_mips16_mode_p (decl))
     return false;
 
+  /* ...and when -minterlink-mips16 is in effect, assume that external
+     functions could be MIPS16 ones unless an attribute explicitly
+     tells us otherwise.  We only care about cases where the sibling
+     and normal calls would both be direct.  */
+  if (TARGET_INTERLINK_MIPS16
+      && decl
+      && DECL_EXTERNAL (decl)
+      && !mips_nomips16_decl_p (decl)
+      && const_call_insn_operand (XEXP (DECL_RTL (decl), 0), VOIDmode))
+    return false;
+
   /* Otherwise OK.  */
   return true;
 }
index bbbc305..05aedda 100644 (file)
@@ -164,6 +164,10 @@ mhard-float
 Target Report RejectNegative InverseMask(SOFT_FLOAT_ABI, HARD_FLOAT_ABI)
 Allow the use of hardware floating-point ABI and instructions
 
+minterlink-mips16
+Target Report Var(TARGET_INTERLINK_MIPS16) Init(0)
+Generate code that can be safely linked with MIPS16 code.
+
 mips
 Target RejectNegative Joined
 -mipsN Generate code for ISA level N
index ddd95a4..7f85b7e 100644 (file)
@@ -623,6 +623,7 @@ Objective-C and Objective-C++ Dialects}.
 @gccoptlist{-EL  -EB  -march=@var{arch}  -mtune=@var{arch} @gol
 -mips1  -mips2  -mips3  -mips4  -mips32  -mips32r2  -mips64 @gol
 -mips16  -mno-mips16  -mflip-mips16 @gol
+-minterlink-mips16  -mno-interlink-mips16 @gol
 -mabi=@var{abi}  -mabicalls  -mno-abicalls @gol
 -mshared  -mno-shared  -mxgot  -mno-xgot  -mgp32  -mgp64 @gol
 -mfp32  -mfp64  -mhard-float  -msoft-float @gol
@@ -11684,6 +11685,18 @@ Generate MIPS16 code on alternating functions.  This option is provided
 for regression testing of mixed MIPS16/non-MIPS16 code generation, and is
 not intended for ordinary use in compiling user code.
 
+@item -minterlink-mips16
+@itemx -mno-interlink-mips16
+@opindex minterlink-mips16
+@opindex mno-interlink-mips16
+Require (do not require) that non-MIPS16 code be link-compatible with
+MIPS16 code.
+
+For example, non-MIPS16 code cannot jump directly to MIPS16 code;
+it must either use a call or an indirect jump.  @option{-minterlink-mips16}
+therefore disables direct jumps unless GCC knows that the target of the
+jump is not MIPS16.
+
 @item -mabi=32
 @itemx -mabi=o64
 @itemx -mabi=n32