[all-commits] [llvm/llvm-project] 406b60: [InstCombine] Allow to limit the max number of ite...

Jakub Kuderski via All-commits all-commits at lists.llvm.org
Wed Dec 18 10:55:42 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 406b6019cd2bd50924be11c634b058c01053fbd3
      https://github.com/llvm/llvm-project/commit/406b6019cd2bd50924be11c634b058c01053fbd3
  Author: Jakub Kuderski <kubak at google.com>
  Date:   2019-12-18 (Wed, 18 Dec 2019)

  Changed paths:
    M llvm/include/llvm/Transforms/InstCombine/InstCombine.h
    M llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
    A llvm/test/Transforms/InstCombine/limit-max-iterations.ll

  Log Message:
  -----------
  [InstCombine] Allow to limit the max number of iterations

Summary:
This patch teaches InstCombine to accept a new parameter: maximum number of iterations over functions.

InstCombine tries to simplify instructions by iterating over the whole function until the function stops changing. As a consequence, the last iteration before reaching a fixpoint visits all instructions in the worklist and never performs any rewrites.

Bounding the number of iterations can have 2 benefits:
* In case the users of the pass can make a good guess about the number of required iterations, we can save the time normally spent on the last iteration that doesn't change anything.
* When the wants to use InstCombine as a cleanup pass, it may be enough to run just a few iterations and stop even before reaching a fixpoint. This can be also useful for implementing a lightweight pass pipeline (think `-O1`).

This patch does not change the behavior of opt or Clang -- limiting the number of iterations is entirely opt-in.

Reviewers: fhahn, davide, spatel, foad, nlopes, grosser, lebedev.ri, nikic, xbolva00

Reviewed By: spatel

Subscribers: craig.topper, hiraditya, llvm-commits

Tags: #llvm

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




More information about the All-commits mailing list