aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2010-05-14 21:02:26 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2010-05-14 21:02:26 +0000
commitc13af44bcc9d9435b4a537d189e5d3b6edffe7fe (patch)
tree6266668ab1db306def0cb9225197661fe247de58 /gcc
parentc4e64f39d9f8ce4af60222415b522a4b07f8b86c (diff)
downloadgcc-c13af44bcc9d9435b4a537d189e5d3b6edffe7fe.zip
gcc-c13af44bcc9d9435b4a537d189e5d3b6edffe7fe.tar.gz
gcc-c13af44bcc9d9435b4a537d189e5d3b6edffe7fe.tar.bz2
re PR fortran/44135 (Negative array bounds lead to spurious warning)
2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/44135 * gfortran.dg/actual_array_interface_2.f90: New test. 2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/44135 * fortran/interface.c (get_sym_storage_size): Use signed instead of unsigned mpz_get_?i routines. From-SVN: r159415
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/interface.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/actual_array_interface_2.f9013
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c766d40..a95d16d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/44135
+ * fortran/interface.c (get_sym_storage_size): Use signed instead of
+ unsigned mpz_get_?i routines.
+
2010-05-14 Jakub Jelinek <jakub@redhat.com>
* trans.c (trans_code): Set backend locus early.
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 38adf9b..4bcc63e 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -1645,8 +1645,8 @@ get_sym_storage_size (gfc_symbol *sym)
|| sym->as->lower[i]->expr_type != EXPR_CONSTANT)
return 0;
- elements *= mpz_get_ui (sym->as->upper[i]->value.integer)
- - mpz_get_ui (sym->as->lower[i]->value.integer) + 1L;
+ elements *= mpz_get_si (sym->as->upper[i]->value.integer)
+ - mpz_get_si (sym->as->lower[i]->value.integer) + 1L;
}
return strlen*elements;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b96b9a3..4cf7112 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/44135
+ * gfortran.dg/actual_array_interface_2.f90: New test.
+
2010-05-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/44119
diff --git a/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90 b/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
new file mode 100644
index 0000000..ae429b7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+program gprogram
+ implicit none
+ real, dimension(-2:0) :: my_arr
+ call fill_array(my_arr)
+ contains
+ subroutine fill_array(arr)
+ implicit none
+ real, dimension(-2:0), intent(out) :: arr
+ arr = 42
+ end subroutine fill_array
+end program gprogram
+