[clang] refactor OffloadAction constructor for memory efficiency & cleaner access (PR #134447)

Ayush Pareek via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 4 14:23:19 PDT 2025


https://github.com/ayushpareek2003 created https://github.com/llvm/llvm-project/pull/134447

Avoided repeated DeviceDependences getter calls by using const auto & references

No functional changes; pure memory and readability optimization

>From 2689233873e3c0d998bbfb7bb240d39d1654a973 Mon Sep 17 00:00:00 2001
From: Ayush Pareek <AYUSHPAREEK1980 at GMAIL.COM>
Date: Sat, 5 Apr 2025 02:51:38 +0530
Subject: [PATCH] refactor OffloadAction constructor for memory efficiency and
 cleaner access

Avoided repeated DeviceDependences getter calls by using const auto & references

No functional changes; pure memory and readability optimization
---
 clang/lib/Driver/Action.cpp | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/clang/lib/Driver/Action.cpp b/clang/lib/Driver/Action.cpp
index ec09726044812..26727fc4e9a46 100644
--- a/clang/lib/Driver/Action.cpp
+++ b/clang/lib/Driver/Action.cpp
@@ -226,20 +226,24 @@ OffloadAction::OffloadAction(const HostDependence &HDep,
   // We use the kinds of the host dependence for this action.
   OffloadingArch = HDep.getBoundArch();
   ActiveOffloadKindMask = HDep.getOffloadKinds();
-  HDep.getAction()->propagateHostOffloadInfo(HDep.getOffloadKinds(),
-                                             HDep.getBoundArch());
+  HDep.getAction()->propagateHostOffloadInfo(ActiveOffloadKindMask, OffloadingArch);
+
+  // Store references to avoid repeated getter calls
+  const auto &Actions = DDeps.getActions();
+  const auto &OffloadKinds = DDeps.getOffloadKinds();
+  const auto &BoundArchs = DDeps.getBoundArchs();
+  const auto &ToolChains = DDeps.getToolChains();
 
+  const unsigned NumActions = Actions.size();
   // Add device inputs and propagate info to the device actions. Do work only if
   // we have dependencies.
-  for (unsigned i = 0, e = DDeps.getActions().size(); i != e; ++i) {
-    if (auto *A = DDeps.getActions()[i]) {
+  for (unsigned i = 0; i != NumActions; ++i) {
+    if (auto *A = Actions[i]) {
       getInputs().push_back(A);
-      A->propagateDeviceOffloadInfo(DDeps.getOffloadKinds()[i],
-                                    DDeps.getBoundArchs()[i],
-                                    DDeps.getToolChains()[i]);
+      A->propagateDeviceOffloadInfo(OffloadKinds[i], BoundArchs[i], ToolChains[i]);
       // If this action is used to forward single dependency, set the toolchain.
-      if (DDeps.getActions().size() == 1)
-        OffloadingToolChain = DDeps.getToolChains()[i];
+      if (NumActions == 1)
+        OffloadingToolChain = ToolChains[i];
     }
   }
 }



More information about the cfe-commits mailing list