llvm-project/llvm/lib
Daniel Sanders 1723364a68 Fix compile-time regression caused by rL371928
Summary:
Also fixup rL371928 for cases that occur on our out-of-tree backend

There were still quite a few intermediate APInts and this caused the
compile time of MCCodeEmitter for our target to jump from 16s up to
~5m40s. This patch, brings it back down to ~17s by eliminating pretty
much all of them using two new APInt functions (extractBitsAsZExtValue(),
insertBits() but with a uint64_t). The exact conditions for eliminating
them is that the field extracted/inserted must be <=64-bit which is
almost always true.

Note: The two new APInt API's assume that APInt::WordSize is at least
64-bit because that means they touch at most 2 APInt words. They
statically assert that's true. It seems very unlikely that someone
is patching it to be smaller so this should be fine.

Reviewers: jmolloy

Reviewed By: jmolloy

Subscribers: hiraditya, dexonsmith, llvm-commits

Tags: #llvm

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

llvm-svn: 372243
2019-09-18 18:14:42 +00:00
..
Analysis Data Dependence Graph Basics 2019-09-18 17:43:45 +00:00
AsmParser [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
BinaryFormat [BinaryFormat] Teach identify_magic about Tapi files. 2019-08-21 21:00:16 +00:00
Bitcode Do a sweep of symbol internalization. NFC. 2019-08-23 19:59:23 +00:00
Bitstream [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00
CodeGen [Alignment][NFC] Align(1) to Align::None() conversions 2019-09-18 16:19:40 +00:00
DebugInfo GSYM: Add the llvm::gsym::Header header class with tests 2019-09-17 17:46:13 +00:00
Demangle Synchronize LLVM's copy of libc++abi's demangler with the libc++abi 2019-09-07 00:11:53 +00:00
ExecutionEngine [ExecutionEngine] Don't dereference a dyn_cast result. NFCI. 2019-09-16 15:19:11 +00:00
FuzzMutate [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
Fuzzer
IR [Remarks] Allow the RemarkStreamer to be used directly with a stream 2019-09-18 01:04:45 +00:00
IRReader
LTO [LTO][Legacy] Add new C inferface to query libcall functions 2019-09-16 18:49:54 +00:00
LineEditor [CMake] Delete redundant DEPENDS/LINK_LIBS from LineEditor/XRay 2019-06-22 01:50:21 +00:00
Linker [IRMover] Don't map globals if their types are the same 2019-09-11 18:35:49 +00:00
MC [Alignment] Introduce llvm::Align to MCSection 2019-09-13 09:29:59 +00:00
MCA [Tblgen][MCA] Add the ability to mark groups as LoadQueue and StoreQueue. NFCI 2019-08-27 18:20:34 +00:00
Object [ARM] VFPv2 only supports 16 D registers. 2019-09-17 21:42:38 +00:00
ObjectYAML WasmEmitter - Don't dereference a dyn_cast result. NFCI. 2019-09-17 19:14:11 +00:00
Option [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
Passes Data Dependence Graph Basics 2019-09-18 17:43:45 +00:00
ProfileData [PGO] Change hardcoded thresholds for cold/inlinehint to use summary 2019-09-17 23:12:13 +00:00
Remarks [Remarks] Allow remarks::Format::YAML to take a string table 2019-09-16 22:45:17 +00:00
Support Fix compile-time regression caused by rL371928 2019-09-18 18:14:42 +00:00
TableGen [TableGen] Skip CRLF conversion when writing output 2019-09-11 22:33:50 +00:00
Target [Alignment][NFC] Remove LogAlignment functions 2019-09-18 15:49:49 +00:00
Testing [Testing] Move clangd::Annotations to llvm testing support 2019-04-25 10:08:31 +00:00
TextAPI Revert [llvm-nm] Add tapi file support 2019-09-11 21:35:28 +00:00
ToolDrivers [llvm-dlltool] Handle external and internal names with differing decoration 2019-09-02 13:28:16 +00:00
Transforms [SampleFDO] Minimize performance impact when profile-sample-accurate 2019-09-18 16:06:28 +00:00
WindowsManifest Fight a bit against global initializers. NFC. 2019-08-22 19:43:27 +00:00
XRay [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CMakeLists.txt Fix build errors LLVM tests are disabled. 2019-07-11 22:08:35 +00:00
LLVMBuild.txt [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00