[flang-commits] [flang] [flang] Silence "used but undefined" warning for LOC(x) (PR #174807)

via flang-commits flang-commits at lists.llvm.org
Wed Jan 7 09:21:51 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-semantics

Author: Peter Klausler (klausler)

<details>
<summary>Changes</summary>

When a variable appears as the argument of the extension intrinsic function LOC(x), assume that it's defined for the purposes of the warning about variables that are used but never defined, since the result of the LOC() can be used to define a based Cray pointer.

---
Full diff: https://github.com/llvm/llvm-project/pull/174807.diff


2 Files Affected:

- (modified) flang/lib/Semantics/check-call.cpp (+2-1) 
- (added) flang/test/Semantics/bug2021.f90 (+8) 


``````````diff
diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp
index 6470c3d0d09a9..54e1f6b3bb3fa 100644
--- a/flang/lib/Semantics/check-call.cpp
+++ b/flang/lib/Semantics/check-call.cpp
@@ -776,7 +776,8 @@ static void CheckExplicitDataArg(const characteristics::DummyDataObject &dummy,
         }
       }
     } else if (dummy.intent != common::Intent::In ||
-        (dummyIsPointer && !actualIsPointer)) {
+        (dummyIsPointer && !actualIsPointer) ||
+        (intrinsic && intrinsic->name == "loc")) {
       if (auto named{evaluate::ExtractNamedEntity(actual)}) {
         context.NoteDefinedSymbol(named->GetFirstSymbol());
       }
diff --git a/flang/test/Semantics/bug2021.f90 b/flang/test/Semantics/bug2021.f90
new file mode 100644
index 0000000000000..f5214bce946a9
--- /dev/null
+++ b/flang/test/Semantics/bug2021.f90
@@ -0,0 +1,8 @@
+!RUN: %flang -fc1 -fsyntax-only -pedantic %s 2>&1 | FileCheck %s
+!CHECK-NOT: warning: Value of uninitialized local variable 'b' is used but never defined [-Wused-undefined-variable]
+real :: a, b
+pointer(p,a)
+p = loc(b)
+a = 2.0
+print *, b
+end

``````````

</details>


https://github.com/llvm/llvm-project/pull/174807


More information about the flang-commits mailing list