[flang][cuda] Improve data transfer detection by filtering symbols (#98378)
The current data transfer detection was collecting too many symbol and
made wrong decision. This patch introduces a new function
`CollectCudaSymbols` that is different than `CollectSymbols` and collect
only symbol of interest for cuda data transfer in an expression.
Currently two cases where symbols are filtered out are:
- array subscripts: only the array symbol is on interest, the indexing
can be filtered out
- function arguments: symbols of the function arguments are filtered
out.
This fix some false positive data transfer and implicit data transfer.
More filtering might be needed and will be added as follow up patches.