[flang-commits] [flang] [FLANG] Fix for issue #132646 (PR #150007)

Aadesh Premkumar via flang-commits flang-commits at lists.llvm.org
Tue Jul 22 05:17:10 PDT 2025


https://github.com/aadeshps-mcw created https://github.com/llvm/llvm-project/pull/150007

None

>From fb2b31b21b007dc5dca796aa7522f475ca9cd4b6 Mon Sep 17 00:00:00 2001
From: Aadesh PremKumar <aadesh.premkumar at multicorewareinc.com>
Date: Tue, 22 Jul 2025 17:45:43 +0530
Subject: [PATCH] --Fix for issue #132646

---
 flang/lib/Evaluate/intrinsics.cpp | 15 +++++++++------
 flang/test/Evaluate/bug132646.f90 | 24 ++++++++++++++++++++++++
 flang/test/Evaluate/folding04.f90 |  4 +---
 3 files changed, 34 insertions(+), 9 deletions(-)
 create mode 100644 flang/test/Evaluate/bug132646.f90

diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp
index e802915945e26..466bbed93951f 100644
--- a/flang/lib/Evaluate/intrinsics.cpp
+++ b/flang/lib/Evaluate/intrinsics.cpp
@@ -1336,9 +1336,9 @@ static const SpecificIntrinsicInterface specificIntrinsicFunction[]{
     {{"log", {{"x", DefaultReal}}, DefaultReal}},
     {{"log10", {{"x", DefaultReal}}, DefaultReal}},
     {{"max0",
-         {{"a1", DefaultInt}, {"a2", DefaultInt},
-             {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
-         DefaultInt},
+         {{"a1", OperandInt}, {"a2", OperandInt},
+             {"a3", OperandInt, Rank::elemental, Optionality::repeats}},
+         OperandInt},
         "max", true, true},
     {{"max1",
          {{"a1", DefaultReal}, {"a2", DefaultReal},
@@ -1346,9 +1346,9 @@ static const SpecificIntrinsicInterface specificIntrinsicFunction[]{
          DefaultInt},
         "max", true, true},
     {{"min0",
-         {{"a1", DefaultInt}, {"a2", DefaultInt},
-             {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
-         DefaultInt},
+         {{"a1", OperandInt}, {"a2", OperandInt},
+             {"a3", OperandInt, Rank::elemental, Optionality::repeats}},
+         OperandInt},
         "min", true, true},
     {{"min1",
          {{"a1", DefaultReal}, {"a2", DefaultReal},
@@ -3454,6 +3454,9 @@ static DynamicType GetReturnType(const SpecificIntrinsicInterface &interface,
   case KindCode::defaultRealKind:
     category = TypeCategory::Real;
     break;
+  case KindCode::operand:
+    category = TypeCategory::Integer;
+    break;
   default:
     CRASH_NO_CASE;
   }
diff --git a/flang/test/Evaluate/bug132646.f90 b/flang/test/Evaluate/bug132646.f90
new file mode 100644
index 0000000000000..3ffa95589e3c8
--- /dev/null
+++ b/flang/test/Evaluate/bug132646.f90
@@ -0,0 +1,24 @@
+! RUN: %flang %s -o %t && %t | FileCheck %s
+
+program main
+    print *,kind(max0(1_1,2_1))
+    print *,kind(max0(1_2,2_2))
+    print *,kind(max0(1_4,2_4))
+    print *,kind(max0(1_8,2_8))
+
+    print *,kind(min0(1_1,2_1))
+    print *,kind(min0(1_2,2_2))
+    print *,kind(min0(1_4,2_4))
+    print *,kind(min0(1_8,2_8))
+end program main
+
+! CHECK: 1
+! CHECK-NEXT: 2
+! CHECK-NEXT: 4
+! CHECK-NEXT: 8
+
+! CHECK-NEXT: 1
+! CHECK-NEXT: 2
+! CHECK-NEXT: 4
+! CHECK-NEXT: 8
+
diff --git a/flang/test/Evaluate/folding04.f90 b/flang/test/Evaluate/folding04.f90
index 027db20f608b2..c5d5b5ac6c99a 100644
--- a/flang/test/Evaluate/folding04.f90
+++ b/flang/test/Evaluate/folding04.f90
@@ -86,9 +86,7 @@ module specific_extremums
   ! specified for f18 (converting the result).
   integer(8), parameter :: max_i32_8 = 2_8**31-1
   integer, parameter :: expected_min0 = int(min(max_i32_8, 2_8*max_i32_8), 4)
-  !WARN: portability: Argument types do not match specific intrinsic 'min0' requirements; using 'min' generic instead and converting the result to INTEGER(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
-  integer, parameter :: result_min0 =  min0(max_i32_8, 2_8*max_i32_8)
-  ! result_min0 would be -2  if arguments were converted to default integer.
+  integer(8), parameter :: result_min0 =  min0(max_i32_8, 2_8*max_i32_8)
   logical, parameter :: test_min0 = expected_min0 .EQ. result_min0
 
   real, parameter :: expected_amax0 = real(max(max_i32_8, 2_8*max_i32_8), 4)



More information about the flang-commits mailing list