1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 21:13:02 +02:00
llvm-mirror/lib
Chandler Carruth 2ed363a464 [PM] Introduce a reasonable port of the main per-module pass pipeline
from the old pass manager in the new one.

I'm not trying to support (initially) the numerous options that are
currently available to customize the pass pipeline. If we end up really
wanting them, we can add them later, but I suspect many are no longer
interesting. The simplicity of omitting them will help a lot as we sort
out what the pipeline should look like in the new PM.

I've also documented to the best of my ability *why* each pass or group
of passes is used so that reading the pipeline is more helpful. In many
cases I think we have some questionable choices of ordering and I've
left FIXME comments in place so we know what to come back and revisit
going forward. But for now, I've left it as similar to the current
pipeline as I could.

Lastly, I've had to comment out several places where passes are not
ported to the new pass manager or where the loop pass infrastructure is
not yet ready. I did at least fix a few bugs in the loop pass
infrastructure uncovered by running the full pipeline, but I didn't want
to go too far in this patch -- I'll come back and re-enable these as the
infrastructure comes online. But I'd like to keep the comments in place
because I don't want to lose track of which passes need to be enabled
and where they go.

One thing that seemed like a significant API improvement was to require
that we don't build pipelines for O0. It seems to have no real benefit.

I've also switched back to returning pass managers by value as at this
API layer it feels much more natural to me for composition. But if
others disagree, I'm happy to go back to an output parameter.

I'm not 100% happy with the testing strategy currently, but it seems at
least OK. I may come back and try to refactor or otherwise improve this
in subsequent patches but I wanted to at least get a good starting point
in place.

Differential Revision: https://reviews.llvm.org/D28042

llvm-svn: 290325
2016-12-22 06:59:15 +00:00
..
Analysis [PM] Introduce a reasonable port of the main per-module pass pipeline 2016-12-22 06:59:15 +00:00
AsmParser [LLParser] Make the line field of DIMacro(File) optional. 2016-12-22 00:29:00 +00:00
Bitcode Clear the PendingTypeTests vector after moving from it. 2016-12-22 02:52:23 +00:00
CodeGen Fix an assertion in DwarfExpression when emitting fragments in vector registers 2016-12-22 06:10:41 +00:00
DebugInfo Add the ability for DWARFDie objects to get the parent DWARFDie. 2016-12-21 21:37:06 +00:00
Demangle Demangle: remove references to allocator for default allocator 2016-11-20 00:20:27 +00:00
ExecutionEngine Update mailing list post URL and add libunwind reference 2016-12-21 20:51:42 +00:00
Fuzzer [libfuzzer] dump_coverage command line flag 2016-12-19 22:18:08 +00:00
IR Refactor the DIExpression fragment query interface (NFC) 2016-12-22 05:27:12 +00:00
IRReader Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LibDriver LibDriver: Allow resource files to be archive members. 2016-12-15 19:37:46 +00:00
LineEditor
Linker [ThinLTO] Import only necessary DICompileUnit fields 2016-12-12 16:09:30 +00:00
LTO [ThinLTO] Import composite types as declarations 2016-12-16 21:25:01 +00:00
MC Resubmit "[CodeView] Hook CodeViewRecordIO for reading/writing symbols." 2016-12-16 22:48:14 +00:00
Object Fix a bugs with using some Mach-O command line flags like "-arch armv7m". 2016-12-16 22:54:02 +00:00
ObjectYAML Revert "[ObjectYAML] Support for DWARF debug_info section" 2016-12-20 22:36:42 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes [PM] Introduce a reasonable port of the main per-module pass pipeline 2016-12-22 06:59:15 +00:00
ProfileData Make the Error class constructor protected 2016-11-11 04:28:40 +00:00
Support Add missing includes on Windows. 2016-12-21 18:50:52 +00:00
TableGen [TableGen] Centralize/Unify error handling. 2016-12-05 22:58:01 +00:00
Target AMDGPU: Fix missing commute table entries for cmpx 2016-12-22 04:39:41 +00:00
Transforms [PM] Introduce a reasonable port of the main per-module pass pipeline 2016-12-22 06:59:15 +00:00
CMakeLists.txt Try to fix a circular dependency in the modules build. 2016-09-06 20:16:19 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00