Adrian Kuegel 87c1cf490f Use a pair of (building block, index) as key for the cache.
Previously, we only used index as key, and then checked whether the building
block matches. If it didn't match, we overwrote the cache entry. In
pathological cases, this means we *never* used a cached entry, because even in
cases we had already computed a value that could be used, it was already
replaced by a value which could not be used. This lead to exponential compile
time and *huge* generated LLVM IR.

PiperOrigin-RevId: 338237297
Change-Id: I258202c6238056bfb4466a95c30b6cd48700fe21
2020-10-21 04:20:37 -07:00
..

Common utilities and abstractions for handling and emitting LLVM IR for XLA backends.