diff -r b150d6f590fc -r d3e603e7c17c patches/gcc/4.2.3/950-fortran-signed-TImode.patch --- a/patches/gcc/4.2.3/950-fortran-signed-TImode.patch Mon Jul 28 21:08:01 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -Fix building gfortran for ARM. -http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01010.html ----- - -The patch below fixes a crash building libgfortran on arm-linux-gnueabi. - -This target doesn't really have a 128-bit integer type, however it does use -TImode to represent the return value of certain special ABI defined library -functions. This results in type_for_size(TImode) being called. - -Because TImode deosn't correspond to any gfortran integer kind -gfc_type_for_size returns NULL and we segfault shortly after. - -The patch below fixes this by making gfc_type_for_size handle TImode in the -same way as the C frontend. - -Tested on x86_64-linux and arm-linux-gnueabi. -Applied to trunk. - -Paul - -2007-05-15 Paul Brook - - gcc/fortran/ - * trans-types.c (gfc_type_for_size): Handle signed TImode. - -diff -durN gcc-4.2.3.old/gcc/fortran/trans-types.c gcc-4.2.3/gcc/fortran/trans-types.c ---- gcc-4.2.3.old/gcc/fortran/trans-types.c 2007-08-31 10:27:50.000000000 +0200 -+++ gcc-4.2.3/gcc/fortran/trans-types.c 2008-07-17 09:54:20.000000000 +0200 -@@ -1799,6 +1799,13 @@ - if (type && bits == TYPE_PRECISION (type)) - return type; - } -+ -+ /* Handle TImode as a special case because it is used by some backends -+ (eg. ARM) even though it is not available for normal use. */ -+#if HOST_BITS_PER_WIDE_INT >= 64 -+ if (bits == TYPE_PRECISION (intTI_type_node)) -+ return intTI_type_node; -+#endif - } - else - {