diff --git a/clang/lib/AST/ByteCode/Program.cpp b/clang/lib/AST/ByteCode/Program.cpp index e0b86d46428a2..833c9ef88d770 100644 --- a/clang/lib/AST/ByteCode/Program.cpp +++ b/clang/lib/AST/ByteCode/Program.cpp @@ -18,14 +18,12 @@ using namespace clang; using namespace clang::interp; unsigned Program::getOrCreateNativePointer(const void *Ptr) { - auto It = NativePointerIndices.find(Ptr); - if (It != NativePointerIndices.end()) - return It->second; + auto [It, Inserted] = + NativePointerIndices.try_emplace(Ptr, NativePointers.size()); + if (Inserted) + NativePointers.push_back(Ptr); - unsigned Idx = NativePointers.size(); - NativePointers.push_back(Ptr); - NativePointerIndices[Ptr] = Idx; - return Idx; + return It->second; } const void *Program::getNativePointer(unsigned Idx) {