[flang-commits] [flang] [flang] Check SIMPLE on every IEEE_ARITHMETIC elemental function family (PR #231952)

Eugene Epshteyn via flang-commits flang-commits at lists.llvm.org
Thu Oct 15 06:06:20 PDT 2026


https://github.com/eugeneepshteyn updated https://github.com/llvm/llvm-project/pull/231952

>From 9bd56f93018015ba06c24f95f2c9cc8fd262c43f Mon Sep 17 00:00:00 2001
From: Eugene Epshteyn <eepshteyn at nvidia.com>
Date: Wed, 14 Oct 2026 08:03:38 -0700
Subject: [PATCH 1/2] [flang] Check SIMPLE on every IEEE_ARITHMETIC elemental
 function family

simple-ieee-arithmetic-functions.f90 checked one specific,
ieee_is_finite_a4. The SIMPLE prefix is applied by 29 independent macros in
flang-rt/lib/runtime/ieee_arithmetic.f90, so dropping it from any other
family went unnoticed. Reference one specific per family and check that each
is SIMPLE.

Assisted-by: AI
---
 .../simple-ieee-arithmetic-functions.f90      | 73 ++++++++++++++++++-
 1 file changed, 70 insertions(+), 3 deletions(-)

diff --git a/flang/test/Semantics/simple-ieee-arithmetic-functions.f90 b/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
index fbd4a9386bdc5a..a74dfbb081193e 100644
--- a/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
+++ b/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
@@ -2,9 +2,76 @@
 ! RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s
 
 program test_ieee_arithmetic_simple
-  use, intrinsic :: ieee_arithmetic, only: ieee_is_finite
+  use, intrinsic :: ieee_arithmetic, only: ieee_class, ieee_class_type, &
+      ieee_copy_sign, ieee_is_finite, ieee_logb, ieee_max, ieee_max_mag, &
+      ieee_max_num, ieee_max_num_mag, ieee_min, ieee_min_mag, ieee_min_num, &
+      ieee_min_num_mag, ieee_positive_normal, ieee_quiet_eq, ieee_quiet_ge, &
+      ieee_quiet_gt, ieee_quiet_le, ieee_quiet_lt, ieee_quiet_ne, ieee_rem, &
+      ieee_rint, ieee_signaling_eq, ieee_signaling_ge, ieee_signaling_gt, &
+      ieee_signaling_le, ieee_signaling_lt, ieee_signaling_ne, ieee_signbit, &
+      ieee_unordered, ieee_value
   implicit none
-  logical :: x
-  x = ieee_is_finite(1.0)
+  real :: x, y, r
+  logical :: l
+  type(ieee_class_type) :: c
+  x = 1.0
+  y = 2.0
+  c = ieee_class(x)
+  r = ieee_copy_sign(x, y)
+  l = ieee_is_finite(x)
+  r = ieee_logb(x)
+  r = ieee_max(x, y)
+  r = ieee_max_mag(x, y)
+  r = ieee_max_num(x, y)
+  r = ieee_max_num_mag(x, y)
+  r = ieee_min(x, y)
+  r = ieee_min_mag(x, y)
+  r = ieee_min_num(x, y)
+  r = ieee_min_num_mag(x, y)
+  l = ieee_quiet_eq(x, y)
+  l = ieee_quiet_ge(x, y)
+  l = ieee_quiet_gt(x, y)
+  l = ieee_quiet_le(x, y)
+  l = ieee_quiet_lt(x, y)
+  l = ieee_quiet_ne(x, y)
+  r = ieee_rem(x, y)
+  r = ieee_rint(x)
+  l = ieee_signaling_eq(x, y)
+  l = ieee_signaling_ge(x, y)
+  l = ieee_signaling_gt(x, y)
+  l = ieee_signaling_le(x, y)
+  l = ieee_signaling_lt(x, y)
+  l = ieee_signaling_ne(x, y)
+  l = ieee_signbit(x)
+  l = ieee_unordered(x, y)
+  r = ieee_value(x, ieee_positive_normal)
 end program
+! CHECK: ieee_class_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_copy_sign_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
 ! CHECK: ieee_is_finite_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_logb_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_max_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_max_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_max_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_max_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_min_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_min_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_min_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_min_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_quiet_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_rem_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_rint_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signaling_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_signbit_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_unordered_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK: ieee_value_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):

>From bd21f8f628f93622e267a2db25af7a740e4f34d5 Mon Sep 17 00:00:00 2001
From: Eugene Epshteyn <eepshteyn at nvidia.com>
Date: Thu, 15 Oct 2026 06:05:48 -0700
Subject: [PATCH 2/2] [flang] Use CHECK-DAG and drop the program body in
 simple-ieee-arithmetic-functions.f90

-fdebug-dump-symbols prints the whole ieee_arithmetic module scope once the
module is read, so neither the only: list nor the references in the program
body affect what is checked. CHECK-DAG keeps the test independent of the
order in which the dump lists the specifics.

Assisted-by: AI
---
 .../simple-ieee-arithmetic-functions.f90      | 101 ++++++------------
 1 file changed, 30 insertions(+), 71 deletions(-)

diff --git a/flang/test/Semantics/simple-ieee-arithmetic-functions.f90 b/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
index a74dfbb081193e..34e49998c6713b 100644
--- a/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
+++ b/flang/test/Semantics/simple-ieee-arithmetic-functions.f90
@@ -2,76 +2,35 @@
 ! RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s
 
 program test_ieee_arithmetic_simple
-  use, intrinsic :: ieee_arithmetic, only: ieee_class, ieee_class_type, &
-      ieee_copy_sign, ieee_is_finite, ieee_logb, ieee_max, ieee_max_mag, &
-      ieee_max_num, ieee_max_num_mag, ieee_min, ieee_min_mag, ieee_min_num, &
-      ieee_min_num_mag, ieee_positive_normal, ieee_quiet_eq, ieee_quiet_ge, &
-      ieee_quiet_gt, ieee_quiet_le, ieee_quiet_lt, ieee_quiet_ne, ieee_rem, &
-      ieee_rint, ieee_signaling_eq, ieee_signaling_ge, ieee_signaling_gt, &
-      ieee_signaling_le, ieee_signaling_lt, ieee_signaling_ne, ieee_signbit, &
-      ieee_unordered, ieee_value
+  use, intrinsic :: ieee_arithmetic
   implicit none
-  real :: x, y, r
-  logical :: l
-  type(ieee_class_type) :: c
-  x = 1.0
-  y = 2.0
-  c = ieee_class(x)
-  r = ieee_copy_sign(x, y)
-  l = ieee_is_finite(x)
-  r = ieee_logb(x)
-  r = ieee_max(x, y)
-  r = ieee_max_mag(x, y)
-  r = ieee_max_num(x, y)
-  r = ieee_max_num_mag(x, y)
-  r = ieee_min(x, y)
-  r = ieee_min_mag(x, y)
-  r = ieee_min_num(x, y)
-  r = ieee_min_num_mag(x, y)
-  l = ieee_quiet_eq(x, y)
-  l = ieee_quiet_ge(x, y)
-  l = ieee_quiet_gt(x, y)
-  l = ieee_quiet_le(x, y)
-  l = ieee_quiet_lt(x, y)
-  l = ieee_quiet_ne(x, y)
-  r = ieee_rem(x, y)
-  r = ieee_rint(x)
-  l = ieee_signaling_eq(x, y)
-  l = ieee_signaling_ge(x, y)
-  l = ieee_signaling_gt(x, y)
-  l = ieee_signaling_le(x, y)
-  l = ieee_signaling_lt(x, y)
-  l = ieee_signaling_ne(x, y)
-  l = ieee_signbit(x)
-  l = ieee_unordered(x, y)
-  r = ieee_value(x, ieee_positive_normal)
 end program
-! CHECK: ieee_class_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_copy_sign_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_is_finite_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_logb_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_max_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_max_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_max_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_max_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_min_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_min_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_min_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_min_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_quiet_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_rem_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_rint_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signaling_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_signbit_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_unordered_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
-! CHECK: ieee_value_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_class_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_copy_sign_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_is_finite_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_logb_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_max_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_max_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_max_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_max_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_min_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_min_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_min_num_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_min_num_mag_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_quiet_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_rem_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_rint_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_eq_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_ge_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_gt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_le_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_lt_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signaling_ne_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_signbit_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_unordered_a4_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):
+! CHECK-DAG: ieee_value_a4, ELEMENTAL, EXTERNAL, PRIVATE, SIMPLE (Function):



More information about the flang-commits mailing list