https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113412
--- Comment #11 from kargls at comcast dot net --- On 8/26/24 19:06, kargls at comcast dot net wrote: > atanpi. I believe line > 4451 should be emitting the error message you're looking for. Ugh, it's worse than I originally thought. The conditional at 4451 needs to also catch atan(1.d0, r, 3.d0). That is, we are expecting exactly two arguments. In the attached patch, the 'if (!(*ap)->next->next)' counts the arguments. The enclosed conditional then checks that we are dealing with atan, atand, and in the future atanpi. The issue with atan(1.d0,r) and the other patch is that I forgot that a literal constant does not have a name so I was dereferencing a null pointer. Thus, I've simplified the error message. Now, to real cause so head scratching. keywords are not honored! subroutine s3 real :: r = 1. print *, atan (y=-1.d0,x=r) ! Should give error similar to s1 case end % gfcx -c a.f90 a.f90:3:10: 3 | print *, atan (y=-1.d0,x=r) ! Should give error similar to s1 case | 1 Error: Cannot find keyword named ‘y’ in call to ‘atan’ at (1) I think we need to rethink the handling of the 2 argument case, where we make the second argument optional. Then, in gfc_check_atan, we need to swap expressions to align Y with arg1 and X with arg2.