1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/include/llvm
Ivan Krasin a46f4c6583 Use trigrams to speed up SpecialCaseList.
Summary:
it's often the case when the rules in the SpecialCaseList
are of the form hel.o*bar. That gives us a chance to build
trigram index to quickly discard 99% of inputs without
running a full regex. A similar idea was used in Google Code Search
as described in the blog post:
https://swtch.com/~rsc/regexp/regexp4.html

The check is defeated, if there's at least one regex
more complicated than that. In this case, all inputs
will go through the regex. That said, the real-world
rules are often simple or can be simplied. That considerably
speeds up compiling Chromium with CFI and UBSan.

As measured on Chromium's content_message_generator.cc:

before, CFI: 44 s
after, CFI: 23 s
after, CFI, no blacklist: 23 s (~1% slower, but 3 runs were unable to show the difference)
after, regular compilation to bitcode: 23 s

Reviewers: pcc

Subscribers: mgorny, llvm-commits

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

llvm-svn: 288303
2016-12-01 02:54:54 +00:00
..
ADT Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-11-30 23:10:42 +00:00
Analysis [LoopUnroll] Implement profile-based loop peeling 2016-11-30 21:13:57 +00:00
AsmParser
Bitcode Add llvm-modextract tool. 2016-11-29 21:54:33 +00:00
CodeGen Move most EH from MachineModuleInfo to MachineFunction 2016-11-30 23:49:01 +00:00
Config Suppress abi-breaking.h on cygming, for now. 2016-11-29 17:32:58 +00:00
DebugInfo [DebugInfo] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 23:16:32 +00:00
Demangle Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
ExecutionEngine [Orc] Clang-format the recent RPC update (r286620 and related). 2016-11-17 02:33:47 +00:00
IR Revert "[GVN] Basic optimization remark support" 2016-11-30 01:14:35 +00:00
IRReader
LibDriver
LineEditor
Linker [ThinLTO] Don't link module level assembly when importing 2016-10-12 18:39:29 +00:00
LTO LTO: Remove Symbol::getIRName(). 2016-12-01 02:51:12 +00:00
MC MCStreamer: Use "cfi" for CFI related temp labels. 2016-11-30 23:48:26 +00:00
Object Only computeRelativePath() on new members 2016-11-30 22:32:58 +00:00
ObjectYAML [macho2yaml] Don't write empty linkedit data 2016-08-17 21:46:04 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes
ProfileData Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
Support Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
TableGen TableGen: Add operator !or 2016-11-15 06:49:28 +00:00
Target Clarify rules for reserved regs, fix aarch64 ones. 2016-11-30 22:17:10 +00:00
Transforms [LoopUnroll] Implement profile-based loop peeling 2016-11-30 21:13:57 +00:00
CMakeLists.txt
InitializePasses.h Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
LinkAllIR.h Remove unused #includes of TimeValue.h. NFC. 2016-10-24 14:00:26 +00:00
LinkAllPasses.h Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
module.modulemap [ORC] Work around an apparent modules/linkage issue. 2016-11-15 02:14:57 +00:00
module.modulemap.build
Pass.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
PassAnalysisSupport.h
PassInfo.h [llvm] Remove duplicate header from PassInfo.h 2016-11-11 02:01:32 +00:00
PassRegistry.h
PassSupport.h Use StringRef in Pass Info/Support API (NFC) 2016-10-01 04:03:30 +00:00