[gcc/devel/autopar_devel] Fortran : Don't warn for LOGICAL kind conversion PR96319

Giuliano Belinassi giulianob@gcc.gnu.org
Sun Aug 23 00:05:50 GMT 2020


https://gcc.gnu.org/g:eaeca2dd9cff862179fd17638471f553261a707e

commit eaeca2dd9cff862179fd17638471f553261a707e
Author: Mark Eggleston <markeggleston@gcc.gnu.org>
Date:   Mon Jul 27 15:28:50 2020 +0100

    Fortran  : Don't warn for LOGICAL kind conversion PR96319
    
    LOGICAL values will always fit regardless of kind so there
    is no need for warnings.
    
    2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
    
    gcc/fortran/
    
            PR fortran/96319
            * intrinsic.c (gfc_convert_type_warn):  Add check for
            LOGICAL type so that warnings are not output.
    
    2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
    
    gcc/testsuite/
    
            PR fortran/96319
            * gfortran.dg/pr96319.f90: New test.

Diff:
---
 gcc/fortran/intrinsic.c               |  6 ++++--
 gcc/testsuite/gfortran.dg/pr96319.f90 | 12 ++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 3518a4e2c87..ef33587a774 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -5245,8 +5245,10 @@ gfc_convert_type_warn (gfc_expr *expr, gfc_typespec *ts, int eflag, int wflag,
 	{
 	  /* Larger kinds can hold values of smaller kinds without problems.
 	     Hence, only warn if target kind is smaller than the source
-	     kind - or if -Wconversion-extra is specified.  */
-	  if (expr->expr_type != EXPR_CONSTANT)
+	     kind - or if -Wconversion-extra is specified.  LOGICAL values
+	     will always fit regardless of kind so ignore conversion.  */
+	  if (expr->expr_type != EXPR_CONSTANT
+	      && ts->type != BT_LOGICAL)
 	    {
 	      if (warn_conversion && from_ts.kind > ts->kind)
 		gfc_warning_now (OPT_Wconversion, "Possible change of value in "
diff --git a/gcc/testsuite/gfortran.dg/pr96319.f90 b/gcc/testsuite/gfortran.dg/pr96319.f90
new file mode 100644
index 00000000000..6d8d3b476eb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr96319.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-Wconversion -Wconversion-extra" }
+
+program test
+  LOGICAL(1) :: a
+  logical(4) :: t = .true.
+  logical(4) :: b
+  logical(1) :: f = .false.
+  a = t
+  b = f
+end program test
+


More information about the Gcc-cvs mailing list