[InstCombine] Improve infinite loop detection
authorJakub Kuderski <kubak@google.com>
Fri, 20 Dec 2019 21:08:52 +0000 (16:08 -0500)
committerJakub Kuderski <kubak@google.com>
Fri, 20 Dec 2019 21:15:04 +0000 (16:15 -0500)
commitc431c407ebcbbb526f4af93a549fa5b260a9b193
tree9b1d68931a128f68a2288125ccda17f91e92efc9
parent494b1318ca77927e919bbf9a61749a58553d738c
[InstCombine] Improve infinite loop detection

Summary:
This patch limits the default number of iterations performed by InstCombine. It also exposes a new option that allows to specify how many iterations is considered getting stuck in an infinite loop.

Based on experiments performed on real-world C++ programs, InstCombine seems to perform at most ~8-20 iterations, so treating 1000 iterations as an infinite loop seems like a safe choice. See D71145 for details.

The two limits can be specified via command line options.

Reviewers: spatel, lebedev.ri, nikic, xbolva00, grosser

Reviewed By: spatel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71673
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/test/Transforms/InstCombine/limit-max-iterations.ll