https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66681

--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> ---
This cures the problem in all its guises:

Index: /home/pault/svn/trunk/gcc/fortran/trans-expr.c
===================================================================
*** /home/pault/svn/trunk/gcc/fortran/trans-expr.c      (revision 227118)
--- /home/pault/svn/trunk/gcc/fortran/trans-expr.c      (working copy)
*************** gfc_trans_scalar_assign (gfc_se * lse, g
*** 8236,8241 ****
--- 8236,8244 ----
        gfc_add_block_to_block (&block, &lse->pre);
        gfc_add_block_to_block (&block, &rse->pre);

+       if (TREE_CODE (lse->expr) == SAVE_EXPR)
+       lse->expr = TREE_OPERAND (lse->expr, 0);
+ 
        gfc_add_modify (&block, lse->expr,
                      fold_convert (TREE_TYPE (lse->expr), rse->expr));
      }

(It is regtesting right now but looks OK)

I will do that business as long a somebody explains to me why one might ever
want to store the value returned by this_image() as a complex :-)

Paul

Reply via email to