patches/gcc/4.2.4/300-fortran-signed-TImode.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Tue Jul 31 22:27:29 2012 +0200 (2012-07-31)
changeset 3018 7776e8369284
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
complibs/cloog: create missing m4 dir

Because we now patch configure.in and configure, the Makefile quicks
in a re-build rule as the source files are now more recent than the
bundled generated files, and that fails because the m4 directory
is missing, although on some systems where aclocal is not installed,
the re-build rule does nothing (except a warning).

Always create tht directory.

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