InstCombine: Restrict computeKnownBits() on all Values to OptLevel > 2
authorMatthias Braun <matze@braunis.de>
Wed, 9 Mar 2016 18:47:11 +0000 (18:47 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 9 Mar 2016 18:47:11 +0000 (18:47 +0000)
commitc31032d607c25d8bc53d59b68b797285f2736ea1
treebb204ddd638c0789effdaa2b5e147bd51b525adb
parent0b5d5b881f7130e9e678d18dc97e593614b5ee3e
InstCombine: Restrict computeKnownBits() on all Values to OptLevel > 2

As part of r251146 InstCombine was extended to call computeKnownBits on
every value in the function to determine whether it happens to be
constant. This increases typical compiletime by 1-3% (5% in irgen+opt
time) in my measurements. On the other hand this case did not trigger
once in the whole llvm-testsuite.

This patch introduces the notion of ExpensiveCombines which are only
enabled for OptLevel > 2. I removed the check in InstructionSimplify as
that is called from various places where the OptLevel is not known but
given the rarity of the situation I think a check in InstCombine is
enough.

Differential Revision: http://reviews.llvm.org/D16835

llvm-svn: 263047
llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
llvm/include/llvm/Transforms/InstCombine/InstCombine.h
llvm/include/llvm/Transforms/Scalar.h
llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/test/Analysis/ValueTracking/known-bits-from-range-md.ll
llvm/test/Transforms/InstCombine/all-bits-shift.ll