Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/intrinsic_actual_1.f @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
! { dg-do compile } ! Tests the fix for PR27554, where the actual argument reference ! to abs would not be recognised as being to an intrinsic ! procedure and would produce junk in the assembler. ! ! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> ! subroutine foo (proc, z) external proc real proc, z if ((proc(z) .ne. abs (z)) .and. & (proc(z) .ne. alog10 (abs(z)))) STOP 1 return end external cos interface function sin (a) real a, sin end function sin end interface intrinsic alog10 real x x = 100. ! The reference here would prevent the actual arg from being seen ! as an intrinsic procedure in the call to foo. x = -abs(x) call foo(abs, x) ! The intrinsic function can be locally over-ridden by an interface call foo(sin, x) ! or an external declaration. call foo(cos, x) ! Just make sure with another intrinsic but this time not referenced. call foo(alog10, -x) end function sin (a) real a, sin sin = -a return end function cos (a) real a, cos cos = -a return end