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.

Reply via email to