1.1 --- a/patches/gcc/4.2.3/950-fortran-signed-TImode.patch Mon Jul 28 21:08:01 2008 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,43 +0,0 @@
1.4 -Fix building gfortran for ARM.
1.5 -http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01010.html
1.6 -----
1.7 -
1.8 -The patch below fixes a crash building libgfortran on arm-linux-gnueabi.
1.9 -
1.10 -This target doesn't really have a 128-bit integer type, however it does use
1.11 -TImode to represent the return value of certain special ABI defined library
1.12 -functions. This results in type_for_size(TImode) being called.
1.13 -
1.14 -Because TImode deosn't correspond to any gfortran integer kind
1.15 -gfc_type_for_size returns NULL and we segfault shortly after.
1.16 -
1.17 -The patch below fixes this by making gfc_type_for_size handle TImode in the
1.18 -same way as the C frontend.
1.19 -
1.20 -Tested on x86_64-linux and arm-linux-gnueabi.
1.21 -Applied to trunk.
1.22 -
1.23 -Paul
1.24 -
1.25 -2007-05-15 Paul Brook <paul@codesourcery.com>
1.26 -
1.27 - gcc/fortran/
1.28 - * trans-types.c (gfc_type_for_size): Handle signed TImode.
1.29 -
1.30 -diff -durN gcc-4.2.3.old/gcc/fortran/trans-types.c gcc-4.2.3/gcc/fortran/trans-types.c
1.31 ---- gcc-4.2.3.old/gcc/fortran/trans-types.c 2007-08-31 10:27:50.000000000 +0200
1.32 -+++ gcc-4.2.3/gcc/fortran/trans-types.c 2008-07-17 09:54:20.000000000 +0200
1.33 -@@ -1799,6 +1799,13 @@
1.34 - if (type && bits == TYPE_PRECISION (type))
1.35 - return type;
1.36 - }
1.37 -+
1.38 -+ /* Handle TImode as a special case because it is used by some backends
1.39 -+ (eg. ARM) even though it is not available for normal use. */
1.40 -+#if HOST_BITS_PER_WIDE_INT >= 64
1.41 -+ if (bits == TYPE_PRECISION (intTI_type_node))
1.42 -+ return intTI_type_node;
1.43 -+#endif
1.44 - }
1.45 - else
1.46 - {