[Flang] Fix for replacing loop uses in LoopVersioning pass (#77899)
commit49212d1601a1f0e34a8867eb1ad2e394f91cade1
authorDavid Green <david.green@arm.com>
Sat, 20 Jan 2024 22:16:05 +0000 (20 22:16 +0000)
committerGitHub <noreply@github.com>
Sat, 20 Jan 2024 22:16:05 +0000 (20 22:16 +0000)
treef24bcf85e321fc0d96e5daccff6e7180ec59d400
parent46a9135d61f729da90b88d3d34a3905c91d194d7
[Flang] Fix for replacing loop uses in LoopVersioning pass (#77899)

The added test case has a loop that is versioned, which has a use of the
loop in an if block after the loop. The current code replaces all uses
of the loop with the new version If, but only if the parent blocks
match. As far as I can see it should be safe to replace all the uses,
then construct the result for the If with op.op.
flang/lib/Optimizer/Transforms/LoopVersioning.cpp
flang/test/Transforms/loop-versioning.fir