[flang] use runRegionDCE instead of a custom DCE in cg-rewrite
authorJean Perier <jperier@nvidia.com>
Fri, 3 Feb 2023 09:29:19 +0000 (10:29 +0100)
committerJean Perier <jperier@nvidia.com>
Fri, 3 Feb 2023 09:30:16 +0000 (10:30 +0100)
commit2adcf1b25d03402278892f88d467c667a6fdd938
tree3dc151c40ed9bb9d5fe41e53740f8cc8ed0402a7
parent6ada493035efcd1e90e8e062595c478babe7cd18
[flang] use runRegionDCE instead of a custom DCE in cg-rewrite

The custom DCE in cg-rewrite is meant to get rid of fir.shape, fir.shift,
fir.shape_shift and fir.slice ops as well as their unused operands
before codegen (that does not lower those abstract operation to LLVM).

However, it turned out to be flowed in case some fir.shape operands were
unused outside of fir.shape and appeared several times as operands:
they were erased at the first appearance, causing the further attemp
to erase it to segfault (since the op IR storage was deallocated).

Instead of trying to fixing the custom DCE code, use mlir::runRegionDCE.

Differential Revision: https://reviews.llvm.org/D143247
flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
flang/test/Fir/declare-codegen.fir