[Flang][OpenMP] Push genEval closer to leaf lowering functions (#77760)
commite5a34f9226ef56669f670dc32661934ee3e56f37
authorKrzysztof Parzyszek <Krzysztof.Parzyszek@amd.com>
Thu, 18 Jan 2024 13:47:35 +0000 (18 07:47 -0600)
committerGitHub <noreply@github.com>
Thu, 18 Jan 2024 13:47:35 +0000 (18 07:47 -0600)
treee6207b304e5bbcdb317c7ceeeefffa6ab7c1cd49
parent0a3a0ea5914cb4633f4f4c14f1ddc46ce067061a
[Flang][OpenMP] Push genEval closer to leaf lowering functions (#77760)

This moves the lowering of the nested evaluations all the way to the
bottom of the call stack. This PR does not attempt to change the leaf
lowering functions beyond placing the call to `genEval` in there.
Whether the nested evaluations should be lowered for any given op
depends on the context in which that op is created, hence a `genNested`
parameter was added.

Contexts in which nested evaluations should not be lowered are during
lowering of composite constructs, such as PARALLEL SECTIONS. This
particular case is considered a block construct tied to the SECTIONS
directive, and the lowering code will first create an empty parallel op,
and then recursively lower the SECTIONS code. Similar situations occur
when lowering most (if not all) compound/composite constructs.

Recursive lowering [4/5]
flang/lib/Lower/OpenMP.cpp