[flang-commits] [flang] [flang] Fix crash in Semantics (PR #148706)
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Mon Jul 14 12:14:42 PDT 2025
https://github.com/klausler created https://github.com/llvm/llvm-project/pull/148706
Allow for renaming in USE association of Cray pointers.
Fixes https://github.com/llvm/llvm-project/issues/148559.
>From c5ee13f2cf13778dab5450a75bc59657a4698a49 Mon Sep 17 00:00:00 2001
From: Peter Klausler <pklausler at nvidia.com>
Date: Mon, 14 Jul 2025 12:12:20 -0700
Subject: [PATCH] [flang] Fix crash in Semantics
Allow for renaming in USE association of Cray pointers.
Fixes https://github.com/llvm/llvm-project/issues/148559.
---
flang/lib/Semantics/tools.cpp | 6 +++---
flang/test/Semantics/bug148559.f90 | 12 ++++++++++++
2 files changed, 15 insertions(+), 3 deletions(-)
create mode 100644 flang/test/Semantics/bug148559.f90
diff --git a/flang/lib/Semantics/tools.cpp b/flang/lib/Semantics/tools.cpp
index 5e5b43f26c791..5a5b02e1ac3ce 100644
--- a/flang/lib/Semantics/tools.cpp
+++ b/flang/lib/Semantics/tools.cpp
@@ -348,9 +348,9 @@ const Symbol &BypassGeneric(const Symbol &symbol) {
const Symbol &GetCrayPointer(const Symbol &crayPointee) {
const Symbol *found{nullptr};
- for (const auto &[pointee, pointer] :
- crayPointee.GetUltimate().owner().crayPointers()) {
- if (pointee == crayPointee.name()) {
+ const Symbol &ultimate{crayPointee.GetUltimate()};
+ for (const auto &[pointee, pointer] : ultimate.owner().crayPointers()) {
+ if (pointee == ultimate.name()) {
found = &pointer.get();
break;
}
diff --git a/flang/test/Semantics/bug148559.f90 b/flang/test/Semantics/bug148559.f90
new file mode 100644
index 0000000000000..d7b959ac8f191
--- /dev/null
+++ b/flang/test/Semantics/bug148559.f90
@@ -0,0 +1,12 @@
+!RUN: %flang_fc1 -fsyntax-only %s
+!Regression test for crash in semantics on Cray pointers
+
+module m
+ pointer(ptr,pp)
+end module m
+
+program main
+ use m, only:renamea=>pp
+ use m, only:pp
+ print *, renamea
+end
More information about the flang-commits
mailing list