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