llvm-6502/include/llvm
Chandler Carruth 0c25726596 [PM] Remove the preverifier and directly compute the DominatorTree for
the verifier after ensuring the CFG is at least usefully formed.

This fixes a number of problems:
1) The PreVerifier was missing the controls the Verifier provides over
   *how* an invalid module is handled -- it just aborted the program!
   Now it uses the same logic as the Verifier which is significantly
   more library-friendly.
2) The DominatorTree used previously could have been cached and not
   updated due to bugs in prior passes and we would silently use the
   stale tree. This could cause dominance errors to not be as quickly
   diagnosed.
3) We can now (in the next patch) pull the functionality of the verifier
   apart from the pass infrastructure so that you can verify IR without
   having any form of pass manager. This in turn frees the code to share
   logic between old and new pass manager variants.

Along the way I fixed at least one annoying bug -- the state for
'Broken' wasn't being cleared from run to run causing all functions
visited after the first broken function to be marked as broken
regardless of whether *they* were a problem. Fortunately, I don't really
know much of a way to observe this peculiarity.

In case folks are worried about the runtime cost, its negligible.
I looked at running the entire regression test suite (which should be
a relatively good use of the verifier) before and after but was unable
to even measure the time spent on the verifier and there was no
regresion from before to after. I checked both with debug builds and
optimized builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199487 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-17 10:56:02 +00:00
..
ADT Add missing definitions of key_type and value_type to DenseSet. 2014-01-08 21:38:04 +00:00
Analysis Fix PR18449: SCEV needs more precise max BECount for multi-exit loop. 2014-01-15 06:42:11 +00:00
AsmParser Move the LLVM IR asm writer header files into the IR directory, as they 2014-01-07 12:34:26 +00:00
Bitcode Make parseBitcodeFile return an ErrorOr<Module *>. 2014-01-15 01:08:23 +00:00
CodeGen Add FPExt option to CCValAssign::LocInfo. When generating calling-convention 2014-01-14 19:56:36 +00:00
Config Remove the test for endianness in configure.ac and regenerate. 2014-01-09 01:09:57 +00:00
DebugInfo llvm-dwarfdump: type unit dwo support 2014-01-09 05:08:24 +00:00
ExecutionEngine Re-apply r196639: Add support for archives and object file caching under MCJIT. 2014-01-08 04:09:09 +00:00
IR Report a warning when dropping outdated debug info metadata. 2014-01-16 01:51:12 +00:00
IRReader
LTO [LTO] Add a hook to map LLVM diagnostics into the clients of LTO. 2014-01-15 22:04:35 +00:00
MC Add an emitRawComment function and use it to simplify some uses of EmitRawText. 2014-01-16 16:28:37 +00:00
Object llvm-objdump/COFF: Print DLL name in the export table header. 2014-01-16 20:50:34 +00:00
Option
Support Use LLVM_EXPLICIT instead of a function pointer as bool. 2014-01-16 23:37:23 +00:00
TableGen Speling fixes. 2013-10-22 15:18:03 +00:00
Target WinCOFF: Transform IR expressions featuring __ImageBase into image relative relocations 2014-01-15 09:16:42 +00:00
Transforms [asan] Remove -fsanitize-address-zero-base-shadow command line 2014-01-16 10:19:12 +00:00
AutoUpgrade.h Debug Info: drop debug info via upgrading path if version number does not match. 2013-12-02 21:29:56 +00:00
CMakeLists.txt
DebugInfo.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
DIBuilder.h Debug info: Implement (rvalue) reference qualifiers for C++11 non-static 2013-12-18 21:48:19 +00:00
GVMaterializer.h Use error_code in GVMaterializer. 2013-11-05 19:36:34 +00:00
InitializePasses.h [PM] Remove the preverifier and directly compute the DominatorTree for 2014-01-17 10:56:02 +00:00
InstVisitor.h Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
LinkAllIR.h [cleanup] Move the Dominators.h and Verifier.h headers into the IR 2014-01-13 09:26:24 +00:00
LinkAllPasses.h [PM] Simplify the interface exposed for IR printing passes. 2014-01-12 11:30:46 +00:00
Linker.h Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
Pass.h
PassAnalysisSupport.h
PassManager.h Move the old pass manager infrastructure into a legacy namespace and 2013-11-09 12:26:54 +00:00
PassRegistry.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
PassSupport.h [opt][PassInfo] Allow opt to run passes that need target machine. 2014-01-16 21:44:34 +00:00