From c5ee13f2cf13778dab5450a75bc59657a4698a49 Mon Sep 17 00:00:00 2001 From: Peter Klausler 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