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

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Built by

void
gfc_conv_expr_reference (gfc_se * se, gfc_expr * expr, bool add_clobber)
{
...
      else if (add_clobber && expr->ref == NULL)
        {
          tree clobber;
          tree var; 
          /* FIXME: This fails if var is passed by reference, see PR
             41453.  */
          var = expr->symtree->n.sym->backend_decl;
          clobber = build_clobber (TREE_TYPE (var));
          gfc_add_modify (&se->pre, var, clobber);
        }

and the fortran code passes down a function as parameter:

FUNCTION ERFCX_R4(X)
!--------------------------------------------------------------------
!
! This subprogram computes approximate values for exp(x*x) * erfc(x).
!   (see comments heading CALERF).
!
!   Author/date: W. J. Cody, March 30, 1987
!
!--------------------------------------------------------------------
   integer, parameter :: rk = r4 ! 8 byte real

   ! argument
   real(rk), intent(in) :: X

   ! return value
   real(rk) :: ERFCX_R4

   ! local variables
   INTEGER :: JINT = 2
   !------------------------------------------------------------------

   CALL CALERF_r4(X, ERFCX_R4, JINT)
END FUNCTION ERFCX_R4

Reply via email to