Issue |
128608
|
Summary |
[Flang] Compilation error when using the type is statement in select type construct
|
Labels |
flang:frontend
|
Assignees |
|
Reporter |
ohno-fj
|
```
Version of flang : 21.0.0(f75126eeabba13ce2aab53c2e4296fca12b9da0d)/AArch64
```
In the attached program, the `type is` statement is defined in `select type` construct, and the type of variable `x` is treated as `integer` instead of `polyphasic` in subsequent blocks.
This is mentioned in `Fortran standard 2023: 11.1.11.2 Execution of the SELECT TYPE construct`, so it seems correct that this should not result in a compilation error.
However, this program results in compilation error in Flang.
The following are the test program, Flang, Gfortran and ifx compilation/execution result.
sngtatm013_2.f90:
```fortran
subroutine ss2
class(*),allocatable::x(:)
allocate(x,source=[1])
select type(x)
type is(integer)
do concurrent(ii=1:10000:1,.true.)
x(ii)=ii
end do
end select
end subroutine ss2
```
```
$ flang -c sngtatm013_2.f90
error: Semantic errors in sngtatm013_2.f90
./sngtatm013_2.f90:7:9: error: Deallocation of a polymorphic entity caused by assignment not allowed in DO CONCURRENT
x(ii)=ii
^^^^^
./sngtatm013_2.f90:2:25: Declaration of 'x'
class(*),allocatable::x(:)
^
$
```
```
$ gfortran -c sngtatm013_2.f90
$
```
```
$ ifx -c sngtatm013_2.f90
$
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs