[clang] [clang][CodeGenOpenCL][NFC] Remove redundant map lookups (PR #125285)
Balazs Benics via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 31 12:25:00 PST 2025
https://github.com/steakhal created https://github.com/llvm/llvm-project/pull/125285
None
>From fa5566e41f8d01535ce4fb33c140fe2fb0e6ae60 Mon Sep 17 00:00:00 2001
From: Balazs Benics <benicsbalazs at gmail.com>
Date: Fri, 31 Jan 2025 21:20:41 +0100
Subject: [PATCH] [clang][CodeGenOpenCL][NFC] Remove redundant map lookups
---
clang/lib/CodeGen/CGOpenCLRuntime.cpp | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/clang/lib/CodeGen/CGOpenCLRuntime.cpp b/clang/lib/CodeGen/CGOpenCLRuntime.cpp
index 115b618056a445e..9f8ff488755ec39 100644
--- a/clang/lib/CodeGen/CGOpenCLRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenCLRuntime.cpp
@@ -130,10 +130,11 @@ void CGOpenCLRuntime::recordBlockInfo(const BlockExpr *E,
assert(!EnqueuedBlockMap.contains(E) && "Block expression emitted twice");
assert(isa<llvm::Function>(InvokeF) && "Invalid invoke function");
assert(Block->getType()->isPointerTy() && "Invalid block literal type");
- EnqueuedBlockMap[E].InvokeFunc = InvokeF;
- EnqueuedBlockMap[E].BlockArg = Block;
- EnqueuedBlockMap[E].BlockTy = BlockTy;
- EnqueuedBlockMap[E].KernelHandle = nullptr;
+ EnqueuedBlockInfo &BlockInfo = EnqueuedBlockMap[E];
+ BlockInfo.InvokeFunc = InvokeF;
+ BlockInfo.BlockArg = Block;
+ BlockInfo.BlockTy = BlockTy;
+ BlockInfo.KernelHandle = nullptr;
}
llvm::Function *CGOpenCLRuntime::getInvokeFunction(const Expr *E) {
@@ -148,17 +149,19 @@ CGOpenCLRuntime::emitOpenCLEnqueuedBlock(CodeGenFunction &CGF, const Expr *E) {
// to get the block literal.
const BlockExpr *Block = getBlockExpr(E);
- assert(EnqueuedBlockMap.contains(Block) && "Block expression not emitted");
+ auto It = EnqueuedBlockMap.find(Block);
+ assert(It != EnqueuedBlockMap.end() && "Block expression not emitted");
+ EnqueuedBlockInfo &BlockInfo = It->second;
// Do not emit the block wrapper again if it has been emitted.
- if (EnqueuedBlockMap[Block].KernelHandle) {
- return EnqueuedBlockMap[Block];
+ if (BlockInfo.KernelHandle) {
+ return BlockInfo;
}
auto *F = CGF.getTargetHooks().createEnqueuedBlockKernel(
- CGF, EnqueuedBlockMap[Block].InvokeFunc, EnqueuedBlockMap[Block].BlockTy);
+ CGF, BlockInfo.InvokeFunc, BlockInfo.BlockTy);
// The common part of the post-processing of the kernel goes here.
- EnqueuedBlockMap[Block].KernelHandle = F;
- return EnqueuedBlockMap[Block];
+ BlockInfo.KernelHandle = F;
+ return BlockInfo;
}
More information about the cfe-commits
mailing list