2007-12-10 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Dec 2007 21:42:56 +0000 (21:42 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Dec 2007 21:42:56 +0000 (21:42 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130752 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 4c184f8..cd9b218 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 0ff3112..b242d07 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 dfcb3b0..2f438da 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