diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-12-10 21:13:59 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-12-10 21:13:59 +0100 |
commit | be94c03412ea6b8613033c2e0fd07e628ef7b4af (patch) | |
tree | 018cfe6cb6ea181912b1475eedf607a41fab9ad3 | |
parent | 7897a1c0294162b5fedef308588f3f354199fd04 (diff) | |
download | gcc-be94c03412ea6b8613033c2e0fd07e628ef7b4af.zip gcc-be94c03412ea6b8613033c2e0fd07e628ef7b4af.tar.gz gcc-be94c03412ea6b8613033c2e0fd07e628ef7b4af.tar.bz2 |
trans-decl.c (add_argument_checking): Check ts.deferred earlier.
2011-12-10 Tobias Burnus <burnus@net-b.de>
Kai Tietz <ktietz@redhat.com>
* trans-decl.c (add_argument_checking): Check ts.deferred earlier.
* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use %ld with long.
Co-Authored-By: Kai Tietz <ktietz@redhat.com>
From-SVN: r182190
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 9 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 2 |
3 files changed, 11 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index abaa344..b7df506 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-12-10 Tobias Burnus <burnus@net-b.de> + Kai Tietz <ktietz@redhat.com> + + * trans-decl.c (add_argument_checking): Check ts.deferred earlier. + * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use %ld with long. + 2011-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/50815 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 50b6474..4ea4e7a 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -4672,7 +4672,8 @@ add_argument_checking (stmtblock_t *block, gfc_symbol *sym) gfc_formal_arglist *formal; for (formal = sym->formal; formal; formal = formal->next) - if (formal->sym && formal->sym->ts.type == BT_CHARACTER) + if (formal->sym && formal->sym->ts.type == BT_CHARACTER + && !fsym->ts.deferred) { enum tree_code comparison; tree cond; @@ -4695,10 +4696,8 @@ add_argument_checking (stmtblock_t *block, gfc_symbol *sym) if the actual argument is (part of) an array, but only if the dummy argument is an array. (See "Sequence association" in Section 12.4.1.4 for F95 and 12.4.1.5 for F2003.) */ - if (fsym->ts.deferred) - continue; - else if (fsym->attr.pointer || fsym->attr.allocatable - || (fsym->as && fsym->as->type == AS_ASSUMED_SHAPE)) + if (fsym->attr.pointer || fsym->attr.allocatable + || (fsym->as && fsym->as->type == AS_ASSUMED_SHAPE)) { comparison = NE_EXPR; message = _("Actual string length does not match the declared one" diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 855db30..d8e1783 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -6015,7 +6015,7 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr) build_int_cst (ncopies_type, 0)); gfc_trans_runtime_check (true, false, cond, &se->pre, &expr->where, "Argument NCOPIES of REPEAT intrinsic is negative " - "(its value is %lld)", + "(its value is %ld)", fold_convert (long_integer_type_node, ncopies)); /* If the source length is zero, any non negative value of NCOPIES |