summaryrefslogtreecommitdiff
path: root/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
diff options
context:
space:
mode:
authorOliver Hunt <oliver@apple.com>2025-10-20 01:38:07 -0700
committerGitHub <noreply@github.com>2025-10-20 01:38:07 -0700
commit7de01aa5d0418bd4e8db2917f831e7383c6863bb (patch)
tree1db866f57c2236573cd4b4c2d141d6d420f87a92 /flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
parent6bc540043d4c3fed8f44c8f6de86be0d1740582e (diff)
parent46a866ab7735aaa0f89fde209d516271c4825c49 (diff)
Merge branch 'main' into users/ojhunt/ptrauth-additionsusers/ojhunt/ptrauth-additions
Diffstat (limited to 'flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp')
-rw-r--r--flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp b/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
index 8104e53920c2..6a57bf2ae6fe 100644
--- a/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
+++ b/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
@@ -23,6 +23,7 @@
#include "flang/Optimizer/HLFIR/HLFIROps.h"
#include "flang/Optimizer/HLFIR/Passes.h"
#include "mlir/Transforms/DialectConversion.h"
+#include "llvm/ADT/SmallSet.h"
namespace hlfir {
#define GEN_PASS_DEF_CONVERTHLFIRTOFIR
@@ -312,10 +313,12 @@ public:
// Propagate other attributes from hlfir.declare to fir.declare.
// OpenACC's acc.declare is one example. Right now, the propagation
// is verbatim.
- mlir::NamedAttrList elidedAttrs =
- mlir::NamedAttrList{firDeclareOp->getAttrs()};
+ llvm::SmallSet<llvm::StringRef, 8> elidedAttrs;
+ for (const mlir::NamedAttribute &firAttr : firDeclareOp->getAttrs())
+ elidedAttrs.insert(firAttr.getName());
+ elidedAttrs.insert(declareOp.getSkipReboxAttrName());
for (const mlir::NamedAttribute &attr : declareOp->getAttrs())
- if (!elidedAttrs.get(attr.getName()))
+ if (!elidedAttrs.contains(attr.getName()))
firDeclareOp->setAttr(attr.getName(), attr.getValue());
auto firBase = firDeclareOp.getResult();
@@ -328,6 +331,8 @@ public:
auto genHlfirBox = [&]() -> mlir::Value {
if (auto baseBoxType =
mlir::dyn_cast<fir::BaseBoxType>(firBase.getType())) {
+ if (declareOp.getSkipRebox())
+ return firBase;
// Rebox so that lower bounds and attributes are correct.
if (baseBoxType.isAssumedRank())
return fir::ReboxAssumedRankOp::create(