1! { dg-do compile } 2! Tests the fix for PR27554, where the actual argument reference 3! to abs would not be recognised as being to an intrinsic 4! procedure and would produce junk in the assembler. 5! 6! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> 7! 8 subroutine foo (proc, z) 9 external proc 10 real proc, z 11 if ((proc(z) .ne. abs (z)) .and. 12 & (proc(z) .ne. alog10 (abs(z)))) call abort () 13 return 14 end 15 16 external cos 17 interface 18 function sin (a) 19 real a, sin 20 end function sin 21 end interface 22 23 24 intrinsic alog10 25 real x 26 x = 100. 27! The reference here would prevent the actual arg from being seen 28! as an intrinsic procedure in the call to foo. 29 x = -abs(x) 30 call foo(abs, x) 31! The intrinsic function can be locally over-ridden by an interface 32 call foo(sin, x) 33! or an external declaration. 34 call foo(cos, x) 35! Just make sure with another intrinsic but this time not referenced. 36 call foo(alog10, -x) 37 end 38 39 function sin (a) 40 real a, sin 41 sin = -a 42 return 43 end 44 45 function cos (a) 46 real a, cos 47 cos = -a 48 return 49 end 50