Commit 63617e30 by Tobias Burnus Committed by Tobias Burnus

re PR fortran/71068 (ICE in check_data_variable(): Bad expression)

2016-06-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/71068
        * resolve.c (resolve_function): Don't resolve caf_get/caf_send.
        (check_data_variable): Strip-off caf_get before checking.

        PR fortran/71068
        * gfortran.dg/coarray/data_1.f90: New.

From-SVN: r237656
parent 2befd3f7
2016-06-21 Tobias Burnus <burnus@net-b.de>
PR fortran/71068
* resolve.c (resolve_function): Don't resolve caf_get/caf_send.
(check_data_variable): Strip-off caf_get before checking.
2016-06-20 Tobias Burnus <burnus@net-b.de> 2016-06-20 Tobias Burnus <burnus@net-b.de>
fortran/71194 PR fortran/71194
* trans-expr.c (gfc_trans_pointer_assignment): Correctly handle * trans-expr.c (gfc_trans_pointer_assignment): Correctly handle
RHS pointer functions. RHS pointer functions.
......
...@@ -2923,6 +2923,13 @@ resolve_function (gfc_expr *expr) ...@@ -2923,6 +2923,13 @@ resolve_function (gfc_expr *expr)
if (gfc_is_proc_ptr_comp (expr)) if (gfc_is_proc_ptr_comp (expr))
return true; return true;
/* Avoid re-resolving the arguments of caf_get, which can lead to inserting
another caf_get. */
if (sym && sym->attr.intrinsic
&& (sym->intmod_sym_id == GFC_ISYM_CAF_GET
|| sym->intmod_sym_id == GFC_ISYM_CAF_SEND))
return true;
if (sym && sym->attr.intrinsic if (sym && sym->attr.intrinsic
&& !gfc_resolve_intrinsic (sym, &expr->where)) && !gfc_resolve_intrinsic (sym, &expr->where))
return false; return false;
...@@ -14495,6 +14502,10 @@ check_data_variable (gfc_data_variable *var, locus *where) ...@@ -14495,6 +14502,10 @@ check_data_variable (gfc_data_variable *var, locus *where)
mpz_init_set_si (offset, 0); mpz_init_set_si (offset, 0);
e = var->expr; e = var->expr;
if (e->expr_type == EXPR_FUNCTION && e->value.function.isym
&& e->value.function.isym->id == GFC_ISYM_CAF_GET)
e = e->value.function.actual->expr;
if (e->expr_type != EXPR_VARIABLE) if (e->expr_type != EXPR_VARIABLE)
gfc_internal_error ("check_data_variable(): Bad expression"); gfc_internal_error ("check_data_variable(): Bad expression");
......
2016-06-21 Tobias Burnus <burnus@net-b.de>
PR fortran/71068
* gfortran.dg/coarray/data_1.f90: New.
2016-06-21 Wilco Dijkstra <wdijkstr@arm.com> 2016-06-21 Wilco Dijkstra <wdijkstr@arm.com>
* gcc.target/aarch64/advsimd-intrinsics/vrnd.c * gcc.target/aarch64/advsimd-intrinsics/vrnd.c
......
! { dg-do compile }
!
! PR fortran/71068
!
! Contributed by Gerhard Steinmetz
!
program p
integer :: a(2)[*]
data a(1)[1] /1/ ! { dg-error "cannot have a coindex" }
data a(2)[1] /2/ ! { dg-error "cannot have a coindex" }
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment