aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2006-02-08 18:31:36 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2006-02-08 18:31:36 +0000
commit3b8318052298eb22355dad37ff842d871c409b3d (patch)
treebebfda43f375ce069f89e1dac6ba8ece0221d385 /gcc/config/mips
parent855dd2bcff9e32e053bf66e336405ded26e9c927 (diff)
downloadgcc-3b8318052298eb22355dad37ff842d871c409b3d.zip
gcc-3b8318052298eb22355dad37ff842d871c409b3d.tar.gz
gcc-3b8318052298eb22355dad37ff842d871c409b3d.tar.bz2
re PR target/22209 (libgfortran unresolvable symbols on irix6.5)
PR target/22209 * config/mips/mips.h (MIN_UNITS_PER_WORD): Don't define for libgcc. * config/mips/_tilib.c: Remove. * config/fixtfdi.c: New libgcc source file. * config/fixunstfdi.c: New source file. * config/floatditf.c: New source file. * config/floatunditf.c: New souce file. * config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source files above instead of config/mips/_tilib.c. * config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise. From-SVN: r110760
Diffstat (limited to 'gcc/config/mips')
-rw-r--r--gcc/config/mips/_tilib.c158
-rw-r--r--gcc/config/mips/mips.h2
-rw-r--r--gcc/config/mips/t-iris62
-rw-r--r--gcc/config/mips/t-linux642
4 files changed, 4 insertions, 160 deletions
diff --git a/gcc/config/mips/_tilib.c b/gcc/config/mips/_tilib.c
deleted file mode 100644
index 8e5e1ef..0000000
--- a/gcc/config/mips/_tilib.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* A few TImode functions needed for TFmode emulated arithmetic.
- Copyright 2002, 2003 Free Software Foundation, Inc.
- Contributed by Alexandre Oliva <aoliva@redhat.com>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to
-the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
-
-
-#include "tconfig.h"
-#include "coretypes.h"
-#include "tm.h"
-
-#if _MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64
-
-typedef int TItype __attribute__ ((mode (TI)));
-typedef int DItype __attribute__ ((mode (DI)));
-typedef int SItype __attribute__ ((mode (SI)));
-
-typedef unsigned int UDItype __attribute__ ((mode (DI)));
-
-typedef union
-{
- struct TIstruct {
-#if LIBGCC2_WORDS_BIG_ENDIAN
- DItype high, low;
-#else
- DItype low, high;
-#endif
- } s;
- TItype ll;
-} TIunion;
-
-TItype __negti2 (TItype);
-TItype __ashlti3 (TItype, int);
-#if 0
-TItype __ashrti3 (TItype, int);
-#endif
-TItype __lshrti3 (TItype, int);
-
-TItype
-__negti2 (TItype u)
-{
- TIunion w;
- TIunion uu;
-
- uu.ll = u;
-
- w.s.low = -uu.s.low;
- w.s.high = -uu.s.high - ((UDItype) w.s.low > 0);
-
- return w.ll;
-}
-
-TItype
-__ashlti3 (TItype u, int b)
-{
- TIunion w;
- int bm;
- TIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (DItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- w.s.low = 0;
- w.s.high = (UDItype) uu.s.low << -bm;
- }
- else
- {
- UDItype carries = (UDItype) uu.s.low >> bm;
-
- w.s.low = (UDItype) uu.s.low << b;
- w.s.high = ((UDItype) uu.s.high << b) | carries;
- }
-
- return w.ll;
-}
-
-#if 0
-TItype
-__ashrti3 (TItype u, int b)
-{
- TIunion w;
- int bm;
- TIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (DItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- /* w.s.high = 1..1 or 0..0 */
- w.s.high = uu.s.high >> (sizeof (DItype) * BITS_PER_UNIT - 1);
- w.s.low = uu.s.high >> -bm;
- }
- else
- {
- UDItype carries = (UDItype) uu.s.high << bm;
-
- w.s.high = uu.s.high >> b;
- w.s.low = ((UDItype) uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-#endif
-
-TItype
-__lshrti3 (TItype u, int b)
-{
- TIunion w;
- int bm;
- TIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (DItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- w.s.high = 0;
- w.s.low = (UDItype) uu.s.high >> -bm;
- }
- else
- {
- UDItype carries = (UDItype) uu.s.high << bm;
-
- w.s.high = (UDItype) uu.s.high >> b;
- w.s.low = ((UDItype) uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-
-#endif /* N32 or N64 */
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 7a1837f..8ebb3c5 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -975,7 +975,9 @@ extern const struct mips_rtx_cost_data *mips_cost;
/* Width of a word, in units (bytes). */
#define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
+#ifndef IN_LIBGCC2
#define MIN_UNITS_PER_WORD 4
+#endif
/* For MIPS, width of a floating point register. */
#define UNITS_PER_FPREG (TARGET_FLOAT64 ? 8 : 4)
diff --git a/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6
index 254480c..0ddf339 100644
--- a/gcc/config/mips/t-iris6
+++ b/gcc/config/mips/t-iris6
@@ -6,7 +6,7 @@ MULTILIB_OSDIRNAMES=../lib32 ../lib ../lib64
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
-LIB2FUNCS_EXTRA = $(srcdir)/config/mips/_tilib.c
+LIB2FUNCS_EXTRA = $(srcdir)/config/fixtfdi.c $(srcdir)/config/fixunstfdi.c $(srcdir)/config/floatditf.c $(srcdir)/config/floatunditf.c
TPBIT = tp-bit.c
diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
index 1896f49..c96d5ed 100644
--- a/gcc/config/mips/t-linux64
+++ b/gcc/config/mips/t-linux64
@@ -4,7 +4,7 @@ MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-LIB2FUNCS_EXTRA = $(srcdir)/config/mips/_tilib.c
+LIB2FUNCS_EXTRA = $(srcdir)/config/fixtfdi.c $(srcdir)/config/fixunstfdi.c $(srcdir)/config/floatditf.c $(srcdir)/config/floatunditf.c
TPBIT = tp-bit.c