patches/gcc/4.2.3/300-fortran-signed-TImode.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
parent 677 3505660ff419
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@677
     1
Fix building gfortran for ARM.
yann@677
     2
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01010.html
yann@677
     3
----
yann@677
     4
yann@677
     5
The patch below fixes a crash building libgfortran on arm-linux-gnueabi.
yann@677
     6
yann@677
     7
This target doesn't really have a 128-bit integer type, however it does use 
yann@677
     8
TImode to represent the return value of certain special ABI defined library 
yann@677
     9
functions. This results in type_for_size(TImode) being called.
yann@677
    10
yann@677
    11
Because TImode deosn't correspond to any gfortran integer kind 
yann@677
    12
gfc_type_for_size returns NULL and we segfault shortly after.
yann@677
    13
yann@677
    14
The patch below fixes this by making gfc_type_for_size handle TImode in the 
yann@677
    15
same way as the C frontend.
yann@677
    16
yann@677
    17
Tested on x86_64-linux and arm-linux-gnueabi.
yann@677
    18
Applied to trunk.
yann@677
    19
yann@677
    20
Paul
yann@677
    21
yann@677
    22
2007-05-15  Paul Brook  <paul@codesourcery.com>
yann@677
    23
yann@677
    24
    gcc/fortran/
yann@677
    25
    * trans-types.c (gfc_type_for_size): Handle signed TImode.
yann@677
    26
yann@677
    27
diff -durN gcc-4.2.3.old/gcc/fortran/trans-types.c gcc-4.2.3/gcc/fortran/trans-types.c
yann@677
    28
--- gcc-4.2.3.old/gcc/fortran/trans-types.c	2007-08-31 10:27:50.000000000 +0200
yann@677
    29
+++ gcc-4.2.3/gcc/fortran/trans-types.c	2008-07-17 09:54:20.000000000 +0200
yann@677
    30
@@ -1799,6 +1799,13 @@
yann@677
    31
 	  if (type && bits == TYPE_PRECISION (type))
yann@677
    32
 	    return type;
yann@677
    33
 	}
yann@677
    34
+
yann@677
    35
+	/* Handle TImode as a special case because it is used by some backends
yann@677
    36
+	   (eg. ARM) even though it is not available for normal use.  */
yann@677
    37
+#if HOST_BITS_PER_WIDE_INT >= 64
yann@677
    38
+	if (bits == TYPE_PRECISION (intTI_type_node))
yann@677
    39
+	  return intTI_type_node;
yann@677
    40
+#endif
yann@677
    41
     }
yann@677
    42
   else
yann@677
    43
     {