[flang-commits] [flang] [flang] Stop tracking memory source after a load in a more explicit manner. (PR #126156)
Renaud Kauffmann via flang-commits
flang-commits at lists.llvm.org
Fri Feb 7 09:43:10 PST 2025
================
@@ -600,6 +590,41 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
defOp = v.getDefiningOp();
return;
}
+
+ // If we are loading a box reference, but following the data,
+ // we gather the attributes of the box to populate the source
+ // and stop tracking.
+ if (auto boxTy = mlir::dyn_cast<fir::BaseBoxType>(ty);
+ boxTy && followingData) {
+
+ if (mlir::isa<fir::PointerType>(boxTy.getEleTy())) {
+ attributes.set(Attribute::Pointer);
+ }
+
+ auto def = getOriginalDef(op.getMemref());
+ if (auto addrOfOp = def.template getDefiningOp<fir::AddrOfOp>()) {
+ global = addrOfOp.getSymbol();
+
+ if (hasGlobalOpTargetAttr(def, addrOfOp))
+ attributes.set(Attribute::Target);
+
+ type = SourceKind::Global;
+ }
----------------
Renaud-K wrote:
Though, I have added a test that shows that we are reading the target attribute properly. It's only when we add support for local boxes that the attribute needs to be extracted from `fir.declare`. This is coming.
https://github.com/llvm/llvm-project/pull/126156
More information about the flang-commits
mailing list