diff options
| author | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-03-04 08:10:25 +0000 |
|---|---|---|
| committer | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-03-04 08:10:25 +0000 |
| commit | 9744993e01530336d6094eb904ea21e441c66e5f (patch) | |
| tree | 9cd84776e5e5def1cb82db697d37a433ab7f2fab | |
| parent | a6f8dac9f4e73f6a816a784eb6a81cfe41c8fcae (diff) | |
| download | ppe42-gcc-9744993e01530336d6094eb904ea21e441c66e5f.tar.gz ppe42-gcc-9744993e01530336d6094eb904ea21e441c66e5f.zip | |
PR target/30406
* config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
instead of precision.
* gfortran.dg/logical_3.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122523 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/config/rs6000/rs6000.c | 6 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/logical_3.f90 | 10 |
4 files changed, 23 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c9edd2c77c..67eb439ada9 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 f21d5f1d7c3..fd1b8358a9b 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 309ea4ac6e9..5b717af41db 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 00000000000..f4d069e9a4c --- /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 |

