ForAllSingle¶
For array assignments, a statement node.
Declaration¶
Syntax¶
ForAllSingle(do_loop_head head, stmt assign_stmt)
Arguments¶
head
contains do loop head.
assign_stmt
contains assignment statement.
Return values¶
None.
Description¶
ForAllSingle is for array assginment. It
can access unusual sections,
can use indices in RHS expression
can use indirection (vector subscripting).
Types¶
Array or vector.
Examples¶
program forall_01
implicit none
integer :: ivec(3), i
forall(i=1:3) ivec(i)=i
print *,ivec
end program forall_01
ASR:
(TranslationUnit
(SymbolTable
1
{
forall_01:
(Program
(SymbolTable
2
{
i:
(Variable
2
i
Local
()
()
Default
(Integer 4 [])
Source
Public
Required
.false.
),
ivec:
(Variable
2
ivec
Local
()
()
Default
(Integer 4 [((IntegerConstant 1 (Integer 4 []))
(IntegerConstant 3 (Integer 4 [])))])
Source
Public
Required
.false.
)
})
forall_01
[]
[(ForAllSingle
((Var 2 i)
(IntegerConstant 1 (Integer 4 []))
(IntegerConstant 3 (Integer 4 []))
())
(=
(ArrayItem
(Var 2 ivec)
[(()
(Var 2 i)
())]
(Integer 4 [])
ColMajor
()
)
(Var 2 i)
()
)
)
(Print
()
[(Var 2 ivec)]
()
()
)]
)
})
[]
)