aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/InitPreprocessor.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2021-03-05 11:32:06 +0000
committerJay Foad <jay.foad@amd.com>2021-03-17 09:28:50 +0000
commitb8bf94df2576b2ab1213a17e6e09fed38c684090 (patch)
tree7000c562eae35c10a7f2c8545414955cf192480d /clang/lib/Frontend/InitPreprocessor.cpp
parentdd90c36d601eeed6aa5c35b1a88874f9519c0343 (diff)
downloadllvm-b8bf94df2576b2ab1213a17e6e09fed38c684090.zip
llvm-b8bf94df2576b2ab1213a17e6e09fed38c684090.tar.gz
llvm-b8bf94df2576b2ab1213a17e6e09fed38c684090.tar.bz2
[TableGen] Fix excessive compile time issue in FixedLenDecoderEmitter
This patch reduces the time taken for clang to compile the generated disassembler for an out-of-tree target with InsnType bigger than 64 bits from 4m30s to 48s. D67686 did a similar thing for CodeEmitterGen. The idea is to tweak the API of the APInt-like InsnType class so that we don't need so many temporary InsnTypes. This takes advantage of the rule stated in D52100 that currently "no string of bits extracted from the encoding may exceeed 64-bits", so we can use uint64_t for some temporaries. D52100 goes on to say that "fields are still permitted to exceed 64-bits so long as they aren't one contiguous string of bits". This patch breaks that by always using a "uint64_t tmp" in the generated decodeToMCInst, but it should be easy to fix in FilterChooser::emitBinaryParser by choosing to use a different type of tmp based on the known total field width. Differential Revision: https://reviews.llvm.org/D98046
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
0 files changed, 0 insertions, 0 deletions