[GISel][KnownBits] Add a cache mechanism to speed compile time
authorQuentin Colombet <qcolombet@apple.com>
Fri, 21 Feb 2020 01:51:26 +0000 (17:51 -0800)
committerQuentin Colombet <qcolombet@apple.com>
Fri, 21 Feb 2020 22:31:42 +0000 (14:31 -0800)
commit618dec2aeffd9d7778b581176e0897b10731e273
tree207630697ba0ff02ca25ce2ac535d81865654785
parent9708279c725a515c69c41130aaaa36dc6a0b34d8
[GISel][KnownBits] Add a cache mechanism to speed compile time

This patch adds a cache that is valid only for the duration of a call
to getKnownBits. With such short lived cache we avoid all the problems
of cache invalidation while still getting the benefits of reusing
the information we already computed.

This cache is useful whenever an instruction occurs more than once
in a chain of computation.
E.g.,
v0 = G_ADD v1, v2
v3 = G_ADD v0, v1

Previously we would compute the known bits for:
v1, v2, v0, then v1 again and finally v3.

With the patch, now we won't have to recompute v1 again.

NFC
llvm/include/llvm/CodeGen/GlobalISel/GISelKnownBits.h
llvm/lib/CodeGen/GlobalISel/GISelKnownBits.cpp