[flang][hlfir] Only canonicalize forall_index if it can be erased
authorJean Perier <jperier@nvidia.com>
Fri, 26 May 2023 06:21:49 +0000 (08:21 +0200)
committerJean Perier <jperier@nvidia.com>
Fri, 26 May 2023 06:22:35 +0000 (08:22 +0200)
commitcd41967d9c705fe83a8396d72852e3f43642a67e
treed80934359f02b9678e849d328a1d26966efc0d06
parenta22ef958cb7e62b6e92e5d737a17560d6a1d504f
[flang][hlfir] Only canonicalize forall_index if it can be erased

It seems the canonicalization was not correct: it cannot return that
it failed if it did modify the IR.
This was exposed by a new MLIR sanity check added in
https://reviews.llvm.org/D144552.
I am not sure it is legit to return success if the operation being
canonicalized is not modified either. So only remove the loads if
they are the only uses of the forall_index.

Should fix (intermittent?) bot failures like
https://lab.llvm.org/buildbot/#/builders/179/builds/6251
since the new MLIR check was added.

Differential Revision: https://reviews.llvm.org/D151487
flang/lib/Optimizer/HLFIR/IR/HLFIROps.cpp
flang/test/HLFIR/forall-index.fir
flang/test/Lower/HLFIR/forall.f90