-
Notifications
You must be signed in to change notification settings - Fork 172
Closed
lfortran/lfortran
#1603Labels
bugSomething isn't workingSomething isn't working
Description
Example:
program arrays_05
implicit none
integer, dimension(5) :: numbers = [10]
end programASR:
(TranslationUnit
(SymbolTable
1
{
arrays_05:
(Program
(SymbolTable
2
{
__1_k:
(Variable
2
__1_k
[]
Local
()
()
Default
(Integer 4 [])
Source
Public
Required
.false.
),
numbers:
(Variable
2
numbers
[]
Local
(ArrayConstant
[(IntegerConstant 10 (Integer 4 []))]
(Integer 4 [((IntegerConstant 1 (Integer 4 []))
(IntegerConstant 1 (Integer 4 [])))])
ColMajor
)
(ArrayConstant
[(IntegerConstant 10 (Integer 4 []))]
(Integer 4 [((IntegerConstant 1 (Integer 4 []))
(IntegerConstant 1 (Integer 4 [])))])
ColMajor
)
Save
(Integer 4 [((IntegerConstant 1 (Integer 4 []))
(IntegerConstant 5 (Integer 4 [])))])
Source
Public
Required
.false.
)
})
arrays_05
[]
[(=
(Var 2 __1_k)
(ArrayBound
(Var 2 numbers)
(IntegerConstant 1 (Integer 4 []))
(Integer 4 [])
LBound
()
)
()
)
(=
(ArrayItem
(Var 2 numbers)
[(()
(Var 2 __1_k)
())]
(Integer 4 [])
ColMajor
()
)
(IntegerConstant 10 (Integer 4 []))
()
)
(=
(Var 2 __1_k)
(IntegerBinOp
(Var 2 __1_k)
Add
(IntegerConstant 1 (Integer 4 []))
(Integer 4 [])
()
)
()
)
(=
(Var 2 __1_k)
(ArrayBound
(Var 2 numbers)
(IntegerConstant 1 (Integer 4 []))
(Integer 4 [])
LBound
()
)
()
)
(=
(ArrayItem
(Var 2 numbers)
[(()
(Var 2 __1_k)
())]
(Integer 4 [])
ColMajor
()
)
(IntegerConstant 10 (Integer 4 []))
()
)
(=
(Var 2 __1_k)
(IntegerBinOp
(Var 2 __1_k)
Add
(IntegerConstant 1 (Integer 4 []))
(Integer 4 [])
()
)
()
)]
)
})
[]
)Here, the array is initialized twice using the init_expr pass
I think the initialization is caused because the pass visits both the m_symbolic_value and m_value of the Variable node and creates init two times.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working