[flang] Support declarations scoping in FIR AA. (#201216)
Further experimentation with MLIR inlining showed that
FIR AA becomes more conservative once a subprogram is inlined.
For example:
```
subroutine caller(p1,p2)
real, pointer :: p1,p1
call callee(p1,p2)
end
subroutine callee(a1,a2)
real :: a1,a2
a1 = a2
end
```
After `callee` is inlined, FIR AA assumes that `a1` and `a2`
alias at the point of the assignment, because it classifies them
as pointer accesses.
This patch adds a machinery to collect declaration information
for multiple subprogram scopes (as currently defined by
`fir.dummy_scope`),
so that FIR AA can use this information for better disambiguation.
Assisted by Cursor