llvm/lib
Chandler Carruth 3d1a470319 [PM] Significantly refactor the pass pipeline parsing to be easier to
reason about and less error prone.

The core idea is to fully parse the text without trying to identify
passes or structure. This is done with a single state machine. There
were various bugs in the logic around this previously that were repeated
and scattered across the code. Having a single routine makes it much
easier to fix and get correct. For example, this routine doesn't suffer
from PR28577.

Then the actual pass construction is handled using *much* easier to read
code and simple loops, with particular pass manager construction sunk to
live with other pass construction. This is especially nice as the pass
managers *are* in fact passes.

Finally, the "implicit" pass manager synthesis is done much more simply
by forming "pre-parsed" structures rather than having to duplicate tons
of logic.

One of the bugs fixed by this was evident in the tests where we accepted
a pipeline that wasn't really well formed. Another bug is PR28577 for
which I have added a test case.

The code is less efficient than the previous code but I'm really hoping
that's not a priority. ;]

Thanks to Sean for the review!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277561 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-03 03:21:41 +00:00
..
Analysis [CFLAA] Be more conservative with values we haven't seen. 2016-08-02 22:17:25 +00:00
AsmParser Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
Bitcode [ThinLTO] Address review comments from PGO indirect call promotion (NFC) 2016-07-18 18:31:50 +00:00
CodeGen [safestack] Layout large allocas first to reduce fragmentation. 2016-08-02 23:21:30 +00:00
DebugInfo PDB: Mark extended file pages as free by default. 2016-08-02 21:56:37 +00:00
ExecutionEngine [Orc] Fix common symbol support in ORC. 2016-08-01 22:23:24 +00:00
Fuzzer [libFuzzer] extend the messages printed by afl_driver 2016-07-19 23:18:28 +00:00
IR [Verifier] Disallow illegal ptr<->int casts in ConstantExprs 2016-08-02 02:55:57 +00:00
IRReader
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
LTO Move legacy LTO interface headers to legacy/ directory. 2016-07-14 21:21:16 +00:00
MC Fix handling of end-of-line preprocessor comments Attempt 2 2016-08-02 19:17:54 +00:00
Object More fixes to get good error messages for bad archives. 2016-08-02 22:58:55 +00:00
ObjectYAML BPF: Use official ELF e_machine value 2016-07-15 22:27:55 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Significantly refactor the pass pipeline parsing to be easier to 2016-08-03 03:21:41 +00:00
ProfileData [PGO] Make needsComdatForCounter() available (NFC) 2016-07-21 20:50:02 +00:00
Support Add unittests to {ARM | AArch64}TargetParser. 2016-07-28 06:11:18 +00:00
TableGen [TableGen] Autobrief-ize Record. NFC. 2016-07-14 14:53:14 +00:00
Target [WebAssembly] Remove unnecessary subtarget checks in peephole pass 2016-08-02 23:31:56 +00:00
Transforms [MSSA] Fix a caching bug. 2016-08-03 01:22:19 +00:00
CMakeLists.txt
LLVMBuild.txt