[flang-commits] [flang] [flang] Adjust new warnings for extensions (PR #94485)

via flang-commits flang-commits at lists.llvm.org
Wed Jun 5 08:14:33 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-semantics

Author: Peter Klausler (klausler)

<details>
<summary>Changes</summary>

Prevent messages from module files, respect the language feature flags when enabling the relaxed PURE dummy argument checking, and check that the new warnings are enabled.

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


2 Files Affected:

- (modified) flang/lib/Semantics/check-declarations.cpp (+16-5) 
- (modified) flang/test/Semantics/call10.f90 (+2-2) 


``````````diff
diff --git a/flang/lib/Semantics/check-declarations.cpp b/flang/lib/Semantics/check-declarations.cpp
index 25de9d4af1ffb..80d1003d0adaa 100644
--- a/flang/lib/Semantics/check-declarations.cpp
+++ b/flang/lib/Semantics/check-declarations.cpp
@@ -730,15 +730,26 @@ void CheckHelper::CheckObjectEntity(
           }
         }
       } else if (!IsIntentInOut(symbol)) { // C1586
-        messages_.Say(
-            "non-POINTER dummy argument of pure %s must have INTENT() or VALUE attribute"_warn_en_US,
-            what);
+        if (!InModuleFile()) {
+          if (context_.IsEnabled(common::LanguageFeature::RelaxedPureDummy)) {
+            if (context_.ShouldWarn(
+                    common::LanguageFeature::RelaxedPureDummy)) {
+              messages_.Say(
+                  "non-POINTER dummy argument of pure %s should have INTENT() or VALUE attribute"_warn_en_US,
+                  what);
+            }
+          } else {
+            messages_.Say(
+                "non-POINTER dummy argument of pure %s must have INTENT() or VALUE attribute"_err_en_US,
+                what);
+          }
+        }
         ok = false;
       }
-      if (ok && InFunction()) {
+      if (ok && InFunction() && !InModuleFile()) {
         if (context_.IsEnabled(common::LanguageFeature::RelaxedPureDummy)) {
           if (context_.ShouldWarn(common::LanguageFeature::RelaxedPureDummy) &&
-              !InModuleFile() && !InElemental()) {
+              !InElemental()) {
             messages_.Say(
                 "non-POINTER dummy argument of pure function should be INTENT(IN) or VALUE"_warn_en_US);
           }
diff --git a/flang/test/Semantics/call10.f90 b/flang/test/Semantics/call10.f90
index ff19f104b051b..a332efe0a1155 100644
--- a/flang/test/Semantics/call10.f90
+++ b/flang/test/Semantics/call10.f90
@@ -53,7 +53,7 @@ pure real function f02(a)
     real, value :: a ! ok
   end function
   pure real function f03(a) ! C1583
-    !ERROR: non-POINTER dummy argument of pure function must have INTENT() or VALUE attribute
+    !WARNING: non-POINTER dummy argument of pure function should have INTENT() or VALUE attribute
     real :: a
   end function
   pure real function f03a(a)
@@ -83,7 +83,7 @@ pure function f08() ! C1585
   end function
 
   pure subroutine s01(a) ! C1586
-    !ERROR: non-POINTER dummy argument of pure subroutine must have INTENT() or VALUE attribute
+    !WARNING: non-POINTER dummy argument of pure subroutine should have INTENT() or VALUE attribute
     real :: a
   end subroutine
   pure subroutine s01a(a)

``````````

</details>


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


More information about the flang-commits mailing list