This patch changes the interface to enable the shrink wrapping optimization.
authorKit Barton <kbarton@ca.ibm.com>
Thu, 6 Aug 2015 18:02:53 +0000 (18:02 +0000)
committerKit Barton <kbarton@ca.ibm.com>
Thu, 6 Aug 2015 18:02:53 +0000 (18:02 +0000)
commit45c20b474e8057b8dae813b799136ca4d36bdcb7
tree024c4b065a254bdafe99ffce7fc3e2dc0679adfc
parentcc9fd3cbe9dec96598f97070e31ee7474360edf3
This patch changes the interface to enable the shrink wrapping optimization.

It adds a new constructor, which takes a std::function predicate function that
is run at the beginning of shrink wrapping to determine whether the optimization
should run on the given machine function. The std::function can be overridden by
each target, allowing target-specific decisions to be made on each machine
function.

This is necessary for PowerPC, as the decision to run shrink wrapping is
partially based on the ABI. Futhermore, this operates nicely with the GCC iFunc
capability, which allows option overrides on a per-function basis.

Phabricator: http://reviews.llvm.org/D11421
llvm-svn: 244235
llvm/include/llvm/CodeGen/Passes.h
llvm/lib/CodeGen/Passes.cpp
llvm/lib/CodeGen/ShrinkWrap.cpp