[flang-commits] [flang] WIP: experiment with PR #127845 (PR #128025)

Joel E. Denny via flang-commits flang-commits at lists.llvm.org
Thu Feb 20 11:56:27 PST 2025


https://github.com/jdenny-ornl updated https://github.com/llvm/llvm-project/pull/128025

>From ee79716519e78984b8f106a6dad551464da1149a Mon Sep 17 00:00:00 2001
From: "Joel E. Denny" <jdenny.ornl at gmail.com>
Date: Wed, 19 Feb 2025 13:33:19 -0500
Subject: [PATCH 1/4] [flang][NFC] AliasAnalysis: Use Indirect not Unknown for
 LoadOp

As mentioned at
<https://github.com/llvm/llvm-project/pull/126156#discussion_r1953523892>:
PR #126156 causes AliasAnalysis::getSource to sometimes return
SourceKind::Unknown when it used to return SourceKind::Indirect for a
LoadOp.  This patch restores that part of the old behavior.  It should
not affect user-visible behavior because AliasAnalysis::alias treats
SourceKind::Unknown and SourceKind::Indirect equivalently, but it does
improve debugging output.
---
 flang/lib/Optimizer/Analysis/AliasAnalysis.cpp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index 70fa18ad65b9b..d881b630d33d9 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -641,14 +641,13 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
             } else if (isDummyArgument(def)) {
               defOp = nullptr;
               v = def;
+            } else {
+              type = SourceKind::Indirect;
             }
-
-            breakFromLoop = true;
-            return;
+          } else {
+            // No further tracking for addresses loaded from memory for now.
+            type = SourceKind::Indirect;
           }
-
-          // No further tracking for addresses loaded from memory for now.
-          type = SourceKind::Indirect;
           breakFromLoop = true;
         })
         .Case<fir::AddrOfOp>([&](auto op) {

>From bc707baf58efeab2df71426ec8eee9239ac5e624 Mon Sep 17 00:00:00 2001
From: "Joel E. Denny" <jdenny.ornl at gmail.com>
Date: Thu, 20 Feb 2025 11:36:32 -0500
Subject: [PATCH 2/4] Remove first new `else` so Indirect goes back to Unknown

---
 flang/lib/Optimizer/Analysis/AliasAnalysis.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index d881b630d33d9..4384e187a754d 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -641,8 +641,6 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
             } else if (isDummyArgument(def)) {
               defOp = nullptr;
               v = def;
-            } else {
-              type = SourceKind::Indirect;
             }
           } else {
             // No further tracking for addresses loaded from memory for now.

>From cca99c0f52a09a01ef6c2fa25bd6559b9d21ab00 Mon Sep 17 00:00:00 2001
From: "Joel E. Denny" <jdenny.ornl at gmail.com>
Date: Thu, 20 Feb 2025 13:10:40 -0500
Subject: [PATCH 3/4] Add back return code before the second new else

---
 flang/lib/Optimizer/Analysis/AliasAnalysis.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index 4384e187a754d..be6086c2c72f0 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -642,6 +642,9 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
               defOp = nullptr;
               v = def;
             }
+
+            breakFromLoop = true;
+            return;
           } else {
             // No further tracking for addresses loaded from memory for now.
             type = SourceKind::Indirect;

>From 586147e8e228ca39ba5f8a81654bd72f0a374e0f Mon Sep 17 00:00:00 2001
From: "Joel E. Denny" <jdenny.ornl at gmail.com>
Date: Thu, 20 Feb 2025 14:56:18 -0500
Subject: [PATCH 4/4] Remove just that return statement

---
 flang/lib/Optimizer/Analysis/AliasAnalysis.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index be6086c2c72f0..06960d962ea05 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -644,7 +644,6 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
             }
 
             breakFromLoop = true;
-            return;
           } else {
             // No further tracking for addresses loaded from memory for now.
             type = SourceKind::Indirect;



More information about the flang-commits mailing list