aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-12-10 21:13:59 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2011-12-10 21:13:59 +0100
commitbe94c03412ea6b8613033c2e0fd07e628ef7b4af (patch)
tree018cfe6cb6ea181912b1475eedf607a41fab9ad3
parent7897a1c0294162b5fedef308588f3f354199fd04 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c9
-rw-r--r--gcc/fortran/trans-intrinsic.c2
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