diff options
author | Roger Sayle <roger@eyesopen.com> | 2006-02-08 18:31:36 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2006-02-08 18:31:36 +0000 |
commit | 3b8318052298eb22355dad37ff842d871c409b3d (patch) | |
tree | bebfda43f375ce069f89e1dac6ba8ece0221d385 /gcc/config/mips | |
parent | 855dd2bcff9e32e053bf66e336405ded26e9c927 (diff) | |
download | gcc-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.c | 158 | ||||
-rw-r--r-- | gcc/config/mips/mips.h | 2 | ||||
-rw-r--r-- | gcc/config/mips/t-iris6 | 2 | ||||
-rw-r--r-- | gcc/config/mips/t-linux64 | 2 |
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 |