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
This commit is contained in:
François-Xavier Coudert 2007-03-04 08:10:25 +00:00
parent 3d1f465aff
commit 7348aa7faf
4 changed files with 23 additions and 4 deletions

View File

@ -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>

View File

@ -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))
{

View File

@ -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

View File

@ -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