patches/gcc/4.2.3/300-fortran-signed-TImode.patch
author Cody Schafer <dev@codyps.com>
Fri May 09 19:13:49 2014 -0700 (2014-05-09)
changeset 3312 4876ff97e039
parent 677 3505660ff419
permissions -rw-r--r--
cc/gcc: allow CC_EXTRA_CONFIG_ARRAY on baremetal

The final bare-metal compiler is built using the core backend.
Currently the core uses the CC_CORE_EXTRA_CONFIG_ARRAY variable.

While this works as supposed to, this can leave the user puzzled
in the menuconfig, since all he can see is the core options, not
the final options.

Only show the core options if any of the core passes are needed,
and use the final options in the core-backend if we're issuing
the bare-metal compiler.

Signed-off-by: Cody P Schafer <dev@codyps.com>
[yann.morin.1998@free.fr: hide core options if no core pass needed;
use final option in core backend if issuing the bare-metal compiler]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <22181e546ba746202489.1399688067@localhost>
Patchwork-Id: 347586
     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      {