summaryrefslogtreecommitdiff
path: root/utils/release
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2016-02-28 22:16:03 +0000
committerChandler Carruth <chandlerc@gmail.com>2016-02-28 22:16:03 +0000
commitf7ae2f50a069857526c2e49dda039ed47746f130 (patch)
tree9fd7867b7e144400b6a8b75e30693c6a311247a4 /utils/release
parentd9b6afb249fd0e71f882f3f5d95fec1d84a12767 (diff)
[PM] Wire up optimization levels and default pipeline construction APIs
in the PassBuilder. These are really just stubs for now, but they give a nice API surface that Clang or other tools can start learning about and enabling for experimentation. I've also wired up parsing various synthetic module pass names to generate these set pipelines. This allows the pipelines to be combined with other passes and have their order controlled, with clear separation between the *kind* of canned pipeline, and the *level* of optimization to be used within that canned pipeline. The most interesting part of this patch is almost certainly the spec for the different optimization levels. I don't think we can ever have hard and fast rules that would make it easy to determine whether a particular optimization makes sense at a particular level -- it will always be in large part a judgement call. But hopefully this will outline the expected rationale that should be used, and the direction that the pipelines should be taken. Much of this was based on a long llvm-dev discussion I started years ago to try and crystalize the intent behind these pipelines, and now, at long long last I'm returning to the task of actually writing it down somewhere that we can cite and try to be consistent with. Differential Revision: http://reviews.llvm.org/D12826 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262196 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/release')
0 files changed, 0 insertions, 0 deletions