aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-03-04 08:10:25 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-03-04 08:10:25 +0000
commit7348aa7faf2ccbea2aae6726b2131fe02fc75cd4 (patch)
tree9cd84776e5e5def1cb82db697d37a433ab7f2fab
parent3d1f465aff3484eafd4e10e38bc7f7331a43d0dd (diff)
downloadgcc-7348aa7faf2ccbea2aae6726b2131fe02fc75cd4.zip
gcc-7348aa7faf2ccbea2aae6726b2131fe02fc75cd4.tar.gz
gcc-7348aa7faf2ccbea2aae6726b2131fe02fc75cd4.tar.bz2
re PR target/30406 ([4.1 only] ICE in LOGICAL(8) functions)
PR target/30406 * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size instead of precision. * gfortran.dg/logical_3.f90: New test. From-SVN: r122523
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/logical_3.f9010
4 files changed, 23 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2c9edd2..67eb439 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR target/30406
+ * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
+ instead of precision.
+
2007-03-04 Roman Zippel <zippel@linux-m68k.org>
Nathan Sidwell <nathan@codesourcery.com>
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index f21d5f1..fd1b835 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -20562,12 +20562,10 @@ rs6000_function_value (tree valtype, tree func ATTRIBUTE_UNUSED)
GEN_INT (12))));
}
- if ((INTEGRAL_TYPE_P (valtype)
- && TYPE_PRECISION (valtype) < BITS_PER_WORD)
+ mode = TYPE_MODE (valtype);
+ if ((INTEGRAL_TYPE_P (valtype) && GET_MODE_BITSIZE (mode) < BITS_PER_WORD)
|| POINTER_TYPE_P (valtype))
mode = TARGET_32BIT ? SImode : DImode;
- else
- mode = TYPE_MODE (valtype);
if (DECIMAL_FLOAT_MODE_P (mode))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 309ea4a..5b717af 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-04 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR target/30406
+ * gfortran.dg/logical_3.f90: New test.
+
2007-03-04 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/30981
diff --git a/gcc/testsuite/gfortran.dg/logical_3.f90 b/gcc/testsuite/gfortran.dg/logical_3.f90
new file mode 100644
index 0000000..f4d069e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/logical_3.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! This checks the fix for PR30406.
+!
+! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+!===============================================================
+
+function f()
+ logical(8) :: f
+ f = .false._8
+end function f