[flang-commits] [flang] 6dc41a6 - [flang][NFC] Moving alias analysis utilities utilities together. Adding new utility. (#125925)
via flang-commits
flang-commits at lists.llvm.org
Thu Feb 6 12:18:55 PST 2025
Author: Renaud Kauffmann
Date: 2025-02-06T12:18:51-08:00
New Revision: 6dc41a639334b913e762f65410fcd14a722b137f
URL: https://github.com/llvm/llvm-project/commit/6dc41a639334b913e762f65410fcd14a722b137f
DIFF: https://github.com/llvm/llvm-project/commit/6dc41a639334b913e762f65410fcd14a722b137f.diff
LOG: [flang][NFC] Moving alias analysis utilities utilities together. Adding new utility. (#125925)
1. Our static functions are a bit spread out in this file. I am
gathering them in an anonymous namespace
2. Moving the code to get the `target` attribute on a `fir.global` into
its own utility.
Added:
Modified:
flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index e33d8fa333e7a59..01f3a0326db216e 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -31,9 +31,27 @@ using namespace mlir;
// AliasAnalysis: alias
//===----------------------------------------------------------------------===//
-/// Temporary function to skip through all the no op operations
-/// TODO: Generalize support of fir.load
-static mlir::Value getOriginalDef(mlir::Value v) {
+static fir::AliasAnalysis::Source::Attributes
+getAttrsFromVariable(fir::FortranVariableOpInterface var) {
+ fir::AliasAnalysis::Source::Attributes attrs;
+ if (var.isTarget())
+ attrs.set(fir::AliasAnalysis::Attribute::Target);
+ if (var.isPointer())
+ attrs.set(fir::AliasAnalysis::Attribute::Pointer);
+ if (var.isIntentIn())
+ attrs.set(fir::AliasAnalysis::Attribute::IntentIn);
+
+ return attrs;
+}
+
+static bool hasGlobalOpTargetAttr(mlir::Value v, fir::AddrOfOp op) {
+ auto globalOpName =
+ mlir::OperationName(fir::GlobalOp::getOperationName(), op->getContext());
+ return fir::valueHasFirAttribute(
+ v, fir::GlobalOp::getTargetAttrName(globalOpName));
+}
+
+mlir::Value getOriginalDef(mlir::Value v) {
mlir::Operation *defOp;
bool breakFromLoop = false;
while (!breakFromLoop && (defOp = v.getDefiningOp())) {
@@ -46,6 +64,27 @@ static mlir::Value getOriginalDef(mlir::Value v) {
return v;
}
+static bool isEvaluateInMemoryBlockArg(mlir::Value v) {
+ if (auto evalInMem = llvm::dyn_cast_or_null<hlfir::EvaluateInMemoryOp>(
+ v.getParentRegion()->getParentOp()))
+ return evalInMem.getMemory() == v;
+ return false;
+}
+
+template <typename OMPTypeOp, typename DeclTypeOp>
+static bool isPrivateArg(omp::BlockArgOpenMPOpInterface &argIface,
+ OMPTypeOp &op, DeclTypeOp &declOp) {
+ if (!op.getPrivateSyms().has_value())
+ return false;
+ for (auto [opSym, blockArg] :
+ llvm::zip_equal(*op.getPrivateSyms(), argIface.getPrivateBlockArgs())) {
+ if (blockArg == declOp.getMemref()) {
+ return true;
+ }
+ }
+ return false;
+}
+
namespace fir {
void AliasAnalysis::Source::print(llvm::raw_ostream &os) const {
@@ -91,13 +130,6 @@ bool AliasAnalysis::Source::isDummyArgument() const {
return false;
}
-static bool isEvaluateInMemoryBlockArg(mlir::Value v) {
- if (auto evalInMem = llvm::dyn_cast_or_null<hlfir::EvaluateInMemoryOp>(
- v.getParentRegion()->getParentOp()))
- return evalInMem.getMemory() == v;
- return false;
-}
-
bool AliasAnalysis::Source::isData() const { return origin.isData; }
bool AliasAnalysis::Source::isBoxData() const {
return mlir::isa<fir::BaseBoxType>(fir::unwrapRefType(valueType)) &&
@@ -491,33 +523,6 @@ ModRefResult AliasAnalysis::getModRef(mlir::Region ®ion,
return result;
}
-AliasAnalysis::Source::Attributes
-getAttrsFromVariable(fir::FortranVariableOpInterface var) {
- AliasAnalysis::Source::Attributes attrs;
- if (var.isTarget())
- attrs.set(AliasAnalysis::Attribute::Target);
- if (var.isPointer())
- attrs.set(AliasAnalysis::Attribute::Pointer);
- if (var.isIntentIn())
- attrs.set(AliasAnalysis::Attribute::IntentIn);
-
- return attrs;
-}
-
-template <typename OMPTypeOp, typename DeclTypeOp>
-static bool isPrivateArg(omp::BlockArgOpenMPOpInterface &argIface,
- OMPTypeOp &op, DeclTypeOp &declOp) {
- if (!op.getPrivateSyms().has_value())
- return false;
- for (auto [opSym, blockArg] :
- llvm::zip_equal(*op.getPrivateSyms(), argIface.getPrivateBlockArgs())) {
- if (blockArg == declOp.getMemref()) {
- return true;
- }
- }
- return false;
-}
-
AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
bool getLastInstantiationPoint) {
auto *defOp = v.getDefiningOp();
@@ -604,10 +609,7 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
ty = v.getType();
type = SourceKind::Global;
- auto globalOpName = mlir::OperationName(
- fir::GlobalOp::getOperationName(), defOp->getContext());
- if (fir::valueHasFirAttribute(
- v, fir::GlobalOp::getTargetAttrName(globalOpName)))
+ if (hasGlobalOpTargetAttr(v, op))
attributes.set(Attribute::Target);
// TODO: Take followBoxData into account when setting the pointer
More information about the flang-commits
mailing list