llvm-project/llvm
Jakub Kuderski c431c407eb [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
2019-12-20 16:15:04 -05:00
..
benchmarks
bindings [llvm][bindings][go] Fix typo 2019-12-03 09:30:32 +01:00
cmake [llvm] Add llvm-lipo dependency to runtimes 2019-12-16 16:05:52 -08:00
docs [llvm-symbolizer] Support reading options from environment 2019-12-20 12:47:27 -08:00
examples [examples] Rename LLJITWithJITLink to LLJITWithCustomObjectLinkingLayer. 2019-12-15 21:57:11 -08:00
include Rename DW_AT_LLVM_isysroot to DW_AT_LLVM_sysroot 2019-12-20 13:11:17 -08:00
lib [InstCombine] Improve infinite loop detection 2019-12-20 16:15:04 -05:00
projects
resources
runtimes [llvm/runtimes] Add runtimes as a dependency of clang-bootstrap-deps 2019-12-16 16:58:15 -08:00
test [InstCombine] Improve infinite loop detection 2019-12-20 16:15:04 -05:00
tools [llvm-symbolizer] Support reading options from environment 2019-12-20 12:47:27 -08:00
unittests Rename DW_AT_LLVM_isysroot to DW_AT_LLVM_sysroot 2019-12-20 13:11:17 -08:00
utils [gn build] Port 82923c71ef 2019-12-20 20:35:49 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Revert "[Examples] Add IRTransformations directory to examples." 2019-12-01 22:20:20 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.