]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/34425 (bogus warning)
authorTobias Burnus <burnus@net-b.de>
Mon, 10 Dec 2007 21:42:56 +0000 (22:42 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 10 Dec 2007 21:42:56 +0000 (22:42 +0100)
2007-12-10  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34425
        * interface.c (get_expr_storage_size): Use signed integer when
        obtaining the bounds.

2007-12-10  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34425
        * gfortran.dg/argument_checking_10.f90: New.

From-SVN: r130752

gcc/fortran/ChangeLog
gcc/fortran/interface.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/argument_checking_10.f90 [new file with mode: 0644]

index 4c184f85e7b39cc1c3d0447fafe3859f48bafb57..cd9b218ef801737eaacaf1ef74305c4b57848b15 100644 (file)
@@ -1,3 +1,9 @@
+2007-12-10  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34425
+       * interface.c (get_expr_storage_size): Use signed integer when
+       obtaining the bounds.
+
 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/22244
index 0ff31127e954a51467e6e850a38ccb0cfbbcccbd..b242d0707f88dcd1cf05ae238ca3b4c4d48b436f 100644 (file)
@@ -1642,8 +1642,8 @@ get_expr_storage_size (gfc_expr *e)
            if (ref->u.ar.as->lower[i] && ref->u.ar.as->upper[i]
                && ref->u.ar.as->lower[i]->expr_type == EXPR_CONSTANT
                && ref->u.ar.as->upper[i]->expr_type == EXPR_CONSTANT)
-             elements *= mpz_get_ui (ref->u.ar.as->upper[i]->value.integer)
-                         - mpz_get_ui (ref->u.ar.as->lower[i]->value.integer)
+             elements *= mpz_get_si (ref->u.ar.as->upper[i]->value.integer)
+                         - mpz_get_si (ref->u.ar.as->lower[i]->value.integer)
                          + 1L;
            else
              return 0;
index dfcb3b05ae474d7d95d975db294757477e09c12d..2f438dae809466d670cad57892e6dbe0fc7d8753 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-10  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34425
+       * gfortran.dg/argument_checking_10.f90: New.
+
 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/34302
diff --git a/gcc/testsuite/gfortran.dg/argument_checking_10.f90 b/gcc/testsuite/gfortran.dg/argument_checking_10.f90
new file mode 100644 (file)
index 0000000..315ee03
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR fortran/34425
+!
+! Contributed by Joost VandeVondele
+!
+IMPLICIT NONE
+INTEGER :: i(-1:1)
+INTEGER :: j(-2:-1)
+CALL S(i)
+CALL S(j) ! { dg-warning "Actual argument contains too few elements for dummy argument 'i' .2/3." }
+CONTAINS
+ SUBROUTINE S(i)
+  INTEGER :: i(0:2)
+ END SUBROUTINE
+END