diff options
author | Florian Hahn <flo@fhahn.com> | 2020-06-12 11:15:26 +0100 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2020-06-12 11:47:13 +0100 |
commit | 4495a6b141ebf55bd1d7de48f3c0920c50cc9a77 (patch) | |
tree | 6f5c40c21130719013e7c6da0e7d38173a1a701a /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | d61b1f8534c6ee0f9dad528cda641d1429920ed4 (diff) | |
download | llvm-4495a6b141ebf55bd1d7de48f3c0920c50cc9a77.zip llvm-4495a6b141ebf55bd1d7de48f3c0920c50cc9a77.tar.gz llvm-4495a6b141ebf55bd1d7de48f3c0920c50cc9a77.tar.bz2 |
[BreakCritEdges] Add option to opt-out of perserving loop-simplify.
This patch adds a new option to CriticalEdgeSplittingOptions to control
whether loop-simplify form must be preserved. It is them used by GVN to
indicate that loop-simplify form does not have to be preserved.
This fixes a crash exposed by 189efe295b6e.
If the critical edge we are splitting goes from a block inside a loop to
a block outside the loop, splitting the edge will create a new exit
block. As a result, the new block will branch to the original exit
block, which will add a non-loop predecessor, breaking loop-simplify
form. To preserve loop-simplify form, the predecessor blocks of the
original exit are split, but that does not work for blocks with
indirectbr terminators. If preserving loop-simplify form is requested,
bail out , before making any changes.
Reviewers: reames, hfinkel, davide, efriedma
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D81582
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions