-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Labels
Description
Version of flang-new : 20.0.0(74b56c7eb807e2ba54bd7a2bcfda5d0bceff1c0c)/AArch64
When the variable sin is used as sin intrinsic function in block construct, a compilation error occurs.
The above program is 13-P-21_block_intrinsic2_2.f90
If the definition of sin in the following block construct:
intrinsic sin
is changed to the following, compilation ends normally.
real,intrinsic:: sin
The above program is 13-P-21_block_intrinsic2_3.f90
The following are the test program, Flang-new, Gfortran and ifx compilation/execution result.
13-P-21_block_intrinsic2_2.f90:
program main
implicit none
real sin
sin = 1
block
intrinsic sin
real :: rr = 0
rr = sin(rr) + 3
if (rr .ne. 3 ) print *, "NG1", rr
end block
sin = sin + 1
if (sin .ne. 2 ) print *, "NG2", sin
print *, "PASS"
end program main$ flang-new 13-P-21_block_intrinsic2_2.f90
error: Semantic errors in 13-P-21_block_intrinsic2_2.f90
./13-P-21_block_intrinsic2_2.f90:4:3: error: Assignment to procedure 'sin' is not allowed
sin = 1
^^^
./13-P-21_block_intrinsic2_2.f90:11:3: error: Assignment to procedure 'sin' is not allowed
sin = sin + 1
^^^
./13-P-21_block_intrinsic2_2.f90:11:9: error: Function call must have argument list
sin = sin + 1
^^^
./13-P-21_block_intrinsic2_2.f90:12:7: error: Function call must have argument list
if (sin .ne. 2 ) print *, "NG2", sin
^^^
./13-P-21_block_intrinsic2_2.f90:12:36: error: Output item must not be a procedure
if (sin .ne. 2 ) print *, "NG2", sin
^^^
$
$ gfortran 13-P-21_block_intrinsic2_2.f90; ./a.out
PASS
$
$ ifx 13-P-21_block_intrinsic2_2.f90; ./a.out
PASS
$
13-P-21_block_intrinsic2_3.f90:
program main
implicit none
real sin
sin = 1
block
! intrinsic sin
real,intrinsic:: sin
real :: rr = 0
rr = sin(rr) + 3
if (rr .ne. 3 ) print *, "NG1", rr
end block
sin = sin + 1
if (sin .ne. 2 ) print *, "NG2", sin
print *, "PASS"
end program main$ flang-new 13-P-21_block_intrinsic2_3.f90; ./a.out
PASS
$
$ gfortran 13-P-21_block_intrinsic2_3.f90; ./a.out
PASS
$
$ ifx 13-P-21_block_intrinsic2_3.f90; ./a.out
PASS
$
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Done