[flang-commits] [flang] [flang] AliasAnalysis: distinguish addr of arg vs. addr in arg (PR #87723)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Mon Apr 8 02:34:13 PDT 2024
================
@@ -171,10 +171,28 @@ void AddAliasTagsPass::runOnAliasInterface(fir::FirAliasTagOpInterface op,
<< " at " << *op << "\n");
tag = state.getFuncTree(func).directDataTree.getTag(name);
} else {
- // SourceKind::Direct is likely to be extended to cases which are not a
- // SymbolRefAttr in the future
- LLVM_DEBUG(llvm::dbgs().indent(2) << "Can't get name for direct "
- << source << " at " << *op << "\n");
+ bool sourceIsDummyArgument = false;
+ if (auto blockArg =
+ source.u.get<mlir::Value>().dyn_cast<mlir::BlockArgument>())
+ sourceIsDummyArgument = blockArg.getOwner()->isEntryBlock();
+ if (sourceIsDummyArgument) {
+ std::string name = getFuncArgName(source.u.get<mlir::Value>());
+ if (!name.empty()) {
+ LLVM_DEBUG(llvm::dbgs().indent(2)
+ << "Found reference to direct from dummy argument " << name
+ << " at " << *op << "\n");
+ tag = state.getFuncTree(func).directDataTree.getTag(name);
----------------
tblah wrote:
Please only add to the `directDataTree` if `enableDirect == true`
https://github.com/llvm/llvm-project/pull/87723
More information about the flang-commits
mailing list