diff options
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 4bdee7c..8a992ca 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -3179,15 +3179,11 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) if (rvalue->expr_type == EXPR_NULL) return SUCCESS; - if (lvalue->ts.type == BT_CHARACTER - && lvalue->ts.cl && rvalue->ts.cl - && lvalue->ts.cl->length && rvalue->ts.cl->length - && abs (gfc_dep_compare_expr (lvalue->ts.cl->length, - rvalue->ts.cl->length)) == 1) + if (lvalue->ts.type == BT_CHARACTER) { - gfc_error ("Different character lengths in pointer " - "assignment at %L", &lvalue->where); - return FAILURE; + gfc_try t = gfc_check_same_strlen (lvalue, rvalue, "pointer assignment"); + if (t == FAILURE) + return FAILURE; } if (rvalue->expr_type == EXPR_VARIABLE && is_subref_array (rvalue)) |