patches/gcc/4.2.3/300-fortran-signed-TImode.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Jul 23 22:02:23 2012 +0200 (2012-07-23)
changeset 3012 95173b196a88
parent 677 3505660ff419
permissions -rw-r--r--
scripts+samples: fix listings the samples

Since we use defconfigs to save the samples, listing all the
samples can no longer be done by passing all the sample names
at one to the script; we need to pass them one-by-one after
we expand the sample's defconfig ibnto a complete .config.

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