[LoopFlatten] Simplify loops so that the pass can operate on unsimplified loops.
authorStelios Ioannou <stelios.ioannou@arm.com>
Tue, 11 May 2021 13:47:19 +0000 (14:47 +0100)
committerStelios Ioannou <stelios.ioannou@arm.com>
Wed, 12 May 2021 18:22:01 +0000 (19:22 +0100)
commit1124ad2f5d47aa468a0d00b6d82853a6d4eda8d1
tree95762b3e1aae6115d5ace1dc3febdd93fce98a26
parent56f7e5a822b43578e086c40d063af2a2c0d214ee
[LoopFlatten] Simplify loops so that the pass can operate on unsimplified loops.

The loop flattening pass requires loops to be in simplified form. If the
loops are not in simplified form, the pass cannot operate. This patch
simplifies all loops before flattening. As a result, all loops will be
simplified regardless of whether anything ends up being flattened.

This change was inspired by observing a certain loop that was not flatten
because the loops were not in simplified form. This loop is added as a
test to verify that it is now flattened.

Differential Revision: https://reviews.llvm.org/D102249

Change-Id: I45bcabe70fb99b0d89f0effafc82eb9e0585ec30
llvm/lib/Transforms/Scalar/LoopFlatten.cpp
llvm/test/Transforms/LoopFlatten/loop-flatten-simplify-cfg.ll [new file with mode: 0644]