[attrs] Split off the forced attributes utility into its own pass that
authorChandler Carruth <chandlerc@gmail.com>
Sun, 27 Dec 2015 08:13:45 +0000 (08:13 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 27 Dec 2015 08:13:45 +0000 (08:13 +0000)
commit6a1ce8ecd6ad14e945ddab147397d44ff0a1002c
treeb857fe5fb8eb7a41f570c6b388f9443c1d0fa5ae
parentc8af8d23783e072e1060d2f23a06990820b01bc0
[attrs] Split off the forced attributes utility into its own pass that
is (by default) run much earlier than FuncitonAttrs proper.

This allows forcing optnone or other widely impactful attributes. It is
also a bit simpler as the force attribute behavior needs no specific
iteration order.

I've added the pass into the default module pass pipeline and LTO pass
pipeline which mirrors where function attrs itself was being run.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256465 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/InitializePasses.h
include/llvm/Transforms/IPO/ForceFunctionAttrs.h [new file with mode: 0644]
lib/Passes/PassBuilder.cpp
lib/Passes/PassRegistry.def
lib/Transforms/IPO/CMakeLists.txt
lib/Transforms/IPO/ForceFunctionAttrs.cpp [new file with mode: 0644]
lib/Transforms/IPO/FunctionAttrs.cpp
lib/Transforms/IPO/IPO.cpp
lib/Transforms/IPO/PassManagerBuilder.cpp
test/Transforms/ForcedFunctionAttrs/forced.ll [new file with mode: 0644]
test/Transforms/FunctionAttrs/forced.ll [deleted file]