LLVM fork for squiid.
https://github.com/llvm/llvm-project/
493a135a56
10.1.6.2 says: > The operators <, <=, >, >=, ==, and /= always have the same interpretations > as the operators .LT., .LE., .GT., .GE., .EQ., and .NE., respectively. That means we have to treat `operator(<)` like `operator(.lt.)`, for example. `<>` is a third alias for `.NE.`. We can't just choose always to use one form (e.g. replacing `operator(.lt.)` with `operator(<)`). This is because all symbols names are `CharBlock`s referring to the cooked character stream so that they have proper source provenance. Also, if a user prefers one style and uses it consistently, that's the form they should see in messages. So the fix is to use whatever form is found in the source, but also to look up symbols by the other names when necessary. To assist this, add `GenericSpecInfo::GetAllNames()` to return all of the names of a generic spec. Each place a generic spec can occur we have to use these to look for the symbol. Also reorganize the `AddUse()` overloads to work with this change. Fixes flang-compiler/f18#746. Original-commit: flang-compiler/f18@7f06f175d5 Reviewed-on: https://github.com/flang-compiler/f18/pull/752 |
||
---|---|---|
flang |