https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96896
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
The error occurs for the LHS of:
myshape(b) = 0.0
reshape_test:_F.DA0 => myshape[[((reshape_test:b(FULL)))]]
(gfc_debug_expr output)
(gdb) p lvalue->rank
$9 = 0
(gdb) p rvalue->rank
$10 = 2
Maybe something like
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -11598 +11598 @@ resolve_ptr_fcn_assign (gfc_code **code, gfc_namespace *ns)
- tmp_ptr_expr = get_temp_from_expr ((*code)->expr2, ns);
+ tmp_ptr_expr = get_temp_from_expr ((*code)->expr1, ns);
Or if expr2->rank == 0 and expr1->rank > 0, it has to be updated afterwards. At
the moment, I do not see whether 'expr1' or 'expr2' makes more sense in terms
of polymorphic variables etc.
However, at a glance, expr1 seems to be more sensible...