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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
expand_assignment is called with
REALPART_EXPR <MEM[(complex(kind=4) &)&C.3418]>
as to, where C.3418 is CONST_DECL.
Of course one can't store into a CONST_DECL.
If I compare this to how we compile:
program p
   interface
      subroutine s(x)
         real :: x
      end
   end interface
   call s(1.0)
end
subroutine s(x)
   real :: x
   x = x + 1
end
then the difference is that
to_rtx = expand_expr (to, NULL_RTX, VOIDmode, EXPAND_WRITE);
in that case returns
(mem:SF (reg/f:DI 90) [1 C.3418+0 S4 A32])
and not the CONST_DOUBLE.  I'll have a look.

Reply via email to