summaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/ValueMapper.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-06 15:23:43 +0000
committerChris Lattner <sabre@nondot.org>2003-10-06 15:23:43 +0000
commit5f92e2b11f68624f9003e710f44e3bc324cbf89a (patch)
treee5d94cf5d4818c88a23f50a92090fd91cb5a379c /lib/Transforms/Utils/ValueMapper.cpp
parentd5a310e4b3251410d4afd58ccea5ec7f0cb13d5f (diff)
downloadllvm-5f92e2b11f68624f9003e710f44e3bc324cbf89a.tar.gz
llvm-5f92e2b11f68624f9003e710f44e3bc324cbf89a.tar.bz2
llvm-5f92e2b11f68624f9003e710f44e3bc324cbf89a.tar.xz
Avoid doing pointless work. Amazingly, this makes us go faster.
Running the inliner on 252.eon used to take 48.4763s, now it takes 14.4148s. In release mode, it went from taking 25.8741s to taking 11.5712s. This also fixes a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8890 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r--lib/Transforms/Utils/ValueMapper.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp
index 484765a7e2..d79c21f474 100644
--- a/lib/Transforms/Utils/ValueMapper.cpp
+++ b/lib/Transforms/Utils/ValueMapper.cpp
@@ -13,6 +13,11 @@ Value *MapValue(const Value *V, std::map<const Value*, Value*> &VM) {
Value *&VMSlot = VM[V];
if (VMSlot) return VMSlot; // Does it exist in the map yet?
+ // Global values do not need to be seeded into the ValueMap if they are using
+ // the identity mapping.
+ if (isa<GlobalValue>(V))
+ return VMSlot = const_cast<Value*>(V);
+
if (Constant *C = const_cast<Constant*>(dyn_cast<Constant>(V))) {
if (isa<ConstantIntegral>(C) || isa<ConstantFP>(C) ||
isa<ConstantPointerNull>(C))