]> granicus.if.org Git - llvm/commitdiff
InferAddressSpaces: Avoid double map lookup
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 31 Jan 2017 23:48:44 +0000 (23:48 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 31 Jan 2017 23:48:44 +0000 (23:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293719 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InferAddressSpaces.cpp

index 8a8f82af82c52538d3dc65c39d6cf071cdd6f56c..9f03e03892ec809184504a16999c33f67622c1de 100644 (file)
@@ -583,14 +583,12 @@ Optional<unsigned> InferAddressSpaces::updateAddressSpace(
   // of all its pointer operands.
   unsigned NewAS = UninitializedAddressSpace;
   for (Value *PtrOperand : getPointerOperands(V)) {
-    unsigned OperandAS;
-    if (InferredAddrSpace.count(PtrOperand))
-      OperandAS = InferredAddrSpace.lookup(PtrOperand);
-    else
-      OperandAS = PtrOperand->getType()->getPointerAddressSpace();
-    NewAS = joinAddressSpaces(NewAS, OperandAS);
+    auto I = InferredAddrSpace.find(PtrOperand);
+    unsigned OperandAS = I != InferredAddrSpace.end() ?
+      I->second : PtrOperand->getType()->getPointerAddressSpace();
 
     // join(flat, *) = flat. So we can break if NewAS is already flat.
+    NewAS = joinAddressSpaces(NewAS, OperandAS);
     if (NewAS == FlatAddrSpace)
       break;
   }