[flang] Fix bug with USE of USE of generic
authorTim Keith <tkeith@nvidia.com>
Wed, 16 Dec 2020 00:11:58 +0000 (16:11 -0800)
committerTim Keith <tkeith@nvidia.com>
Wed, 16 Dec 2020 00:11:59 +0000 (16:11 -0800)
commit3a0352b85c14cb83150df62a9ea9ac3c4129060d
treec9276abdfe2bb97ecd442b52189a66aeba1ab0cb
parent70b0d152435018475516d544fd0361076533f921
[flang] Fix bug with USE of USE of generic

When merging use associations into a generic, we weren't handling
the case where the name that was use associated was itself a use
association. This is fixed by following that association to its
ultimate symbol (`useUltimate` in `DoAddUse`).

An example of the bug is `m12d` in `resolve17.f90`. `g` is associated
with `gc` in `m12c` which is associated with `gb` in `m12b`. It was that
last association that we weren't correctly following.

Differential Revision: https://reviews.llvm.org/D93343
flang/lib/Semantics/resolve-names.cpp
flang/lib/Semantics/symbol.cpp
flang/test/Semantics/resolve17.f90