aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2020-06-12 11:15:26 +0100
committerFlorian Hahn <flo@fhahn.com>2020-06-12 11:47:13 +0100
commit4495a6b141ebf55bd1d7de48f3c0920c50cc9a77 (patch)
tree6f5c40c21130719013e7c6da0e7d38173a1a701a /clang/lib/Frontend/CompilerInvocation.cpp
parentd61b1f8534c6ee0f9dad528cda641d1429920ed4 (diff)
downloadllvm-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