aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorThomas Koenig <Thomas.Koenig@online.de>2006-01-31 22:52:49 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2006-01-31 22:52:49 +0000
commit17d761bbc821fa6a4212181966454d16dc119e96 (patch)
tree6d1a58afeaf8925745ad490371ec9535a34ee9fc /gcc/fortran
parent44d6427469dc640645f31dda9c3d65fe88f25bf2 (diff)
downloadgcc-17d761bbc821fa6a4212181966454d16dc119e96.zip
gcc-17d761bbc821fa6a4212181966454d16dc119e96.tar.gz
gcc-17d761bbc821fa6a4212181966454d16dc119e96.tar.bz2
re PR fortran/26039 (ICE with maxval)
2006-01-31 Thomas Koenig <Thomas.Koenig@online.de> PR fortran/26039 expr.c (gfc_check_conformance): Reorder error message to avoid plural. check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance for checking arguments array and mask. (check_reduction): Likewise. 2006-01-31 Thomas Koenig <Thomas.Koenig@online.de> PR fortran/26039 maxval_maxloc_conformance_1.f90: New test. From-SVN: r110453
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/check.c23
-rw-r--r--gcc/fortran/expr.c2
3 files changed, 32 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index bcdd799..517535b 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2006-01-31 Thomas Koenig <Thomas.Koenig@online.de>
+
+ PR fortran/26039
+ expr.c (gfc_check_conformance): Reorder error message
+ to avoid plural.
+ check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance
+ for checking arguments array and mask.
+ (check_reduction): Likewise.
+
2005-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
PR fortran/24266
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index feb07f0..8b56d52 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -1526,6 +1526,16 @@ gfc_check_minloc_maxloc (gfc_actual_arglist * ap)
if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE)
return FAILURE;
+ if (m != NULL)
+ {
+ char buffer[80];
+ snprintf(buffer, sizeof(buffer), "arguments '%s' and '%s' for intrinsic %s",
+ gfc_current_intrinsic_arg[0], gfc_current_intrinsic_arg[2],
+ gfc_current_intrinsic);
+ if (gfc_check_conformance (buffer, a, m) == FAILURE)
+ return FAILURE;
+ }
+
return SUCCESS;
}
@@ -1548,8 +1558,9 @@ gfc_check_minloc_maxloc (gfc_actual_arglist * ap)
static try
check_reduction (gfc_actual_arglist * ap)
{
- gfc_expr *m, *d;
+ gfc_expr *a, *m, *d;
+ a = ap->expr;
d = ap->next->expr;
m = ap->next->next->expr;
@@ -1571,6 +1582,16 @@ check_reduction (gfc_actual_arglist * ap)
if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE)
return FAILURE;
+ if (m != NULL)
+ {
+ char buffer[80];
+ snprintf(buffer, sizeof(buffer), "arguments '%s' and '%s' for intrinsic %s",
+ gfc_current_intrinsic_arg[0], gfc_current_intrinsic_arg[2],
+ gfc_current_intrinsic);
+ if (gfc_check_conformance (buffer, a, m) == FAILURE)
+ return FAILURE;
+ }
+
return SUCCESS;
}
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 0e699c2..92a7dc0 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1821,7 +1821,7 @@ gfc_check_conformance (const char *optype_msgid,
if (op1_flag && op2_flag && mpz_cmp (op1_size, op2_size) != 0)
{
- gfc_error ("%s at %L has different shape on dimension %d (%d/%d)",
+ gfc_error ("different shape for %s at %L on dimension %d (%d/%d)",
_(optype_msgid), &op1->where, d + 1,
(int) mpz_get_si (op1_size),
(int) mpz_get_si (op2_size));