summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bytecode/Reader/Reader.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-10-03 21:26:53 +0000
committerChris Lattner <sabre@nondot.org>2005-10-03 21:26:53 +0000
commitbad09e71d063aef62deca30e90a33cb3fd25bdb5 (patch)
tree8e03d5415a03fd8f844ab35946d970067f43f8f1 /llvm/lib/Bytecode/Reader/Reader.h
parent409a6b204e70d706950755f40b7d37f646687096 (diff)
downloadbcm5719-llvm-bad09e71d063aef62deca30e90a33cb3fd25bdb5.tar.gz
bcm5719-llvm-bad09e71d063aef62deca30e90a33cb3fd25bdb5.zip
Use a map to cache the ModuleType information, so we can do logarithmic
lookups instead of linear time lookups. This speeds up bc parsing of a large file from 137.834u 118.256s 4:27.96 to 132.611u 114.436s 4:08.53 with a release build. llvm-svn: 23611
Diffstat (limited to 'llvm/lib/Bytecode/Reader/Reader.h')
-rw-r--r--llvm/lib/Bytecode/Reader/Reader.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Bytecode/Reader/Reader.h b/llvm/lib/Bytecode/Reader/Reader.h
index eec5de98493..df0ddca7472 100644
--- a/llvm/lib/Bytecode/Reader/Reader.h
+++ b/llvm/lib/Bytecode/Reader/Reader.h
@@ -333,6 +333,12 @@ private:
/// @brief This vector is used to deal with forward references to types in
/// a module.
TypeListTy ModuleTypes;
+
+ /// @brief This is an inverse mapping of ModuleTypes from the type to an
+ /// index. Because refining types causes the index of this map to be
+ /// invalidated, any time we refine a type, we clear this cache and recompute
+ /// it next time we need it. These entries are ordered by the pointer value.
+ std::vector<std::pair<const Type*, unsigned> > ModuleTypeIDCache;
/// @brief This vector is used to deal with forward references to types in
/// a function.
OpenPOWER on IntegriCloud