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

via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 4 14:24:04 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-clang

Author: Ayush Pareek (ayushpareek2003)

<details>
<summary>Changes</summary>

Avoided repeated DeviceDependences getter calls by using const auto & references

No functional changes; pure memory and readability optimization

---
Full diff: https://github.com/llvm/llvm-project/pull/134447.diff


1 Files Affected:

- (modified) clang/lib/Driver/Action.cpp (+13-9) 


``````````diff
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];
     }
   }
 }

``````````

</details>


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


More information about the cfe-commits mailing list