[PATCH] D12826: [PM] Wire up optimization levels and default pipeline construction APIs in the PassBuilder.

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 12 02:05:04 PDT 2015


chandlerc created this revision.
chandlerc added a subscriber: llvm-commits.

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.

http://reviews.llvm.org/D12826

Files:
  include/llvm/Passes/PassBuilder.h
  lib/Passes/PassBuilder.cpp
  test/Other/new-pass-manager.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12826.34621.patch
Type: text/x-patch
Size: 13180 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150912/c897cdc8/attachment.bin>


More information about the llvm-commits mailing list