[flang-commits] [flang] [flang] Avoid unnecessary looping for constants (PR #156403)
Miguel Saldivar via flang-commits
flang-commits at lists.llvm.org
Tue Sep 2 07:27:37 PDT 2025
================
@@ -152,6 +152,23 @@ class DenseGlobalBuilder {
: TC;
attributeElementType =
Fortran::lower::getFIRType(builder.getContext(), attrTc, KIND, {});
+
+ auto values = constant.values();
+ auto sameElements = [&]() -> bool {
+ if (values.empty())
+ return false;
+
+ return std::all_of(values.begin(), values.end(),
+ [&](const auto &v) { return v == values.front(); });
+ };
+
+ if (sameElements()) {
+ auto attr = convertToAttribute<TC, KIND>(builder, values.front(),
+ attributeElementType);
+ attributes.assign(values.size(), attr);
+ return;
+ }
+
for (auto element : constant.values())
----------------
Saldivarcher wrote:
Good catch! :+1:
https://github.com/llvm/llvm-project/pull/156403
More information about the flang-commits
mailing list