[flang-commits] [flang] d2663fc - [flang][Evaluate] Fold DBLE

Roger Ferrer Ibanez via flang-commits flang-commits at lists.llvm.org
Wed Mar 23 10:29:43 PDT 2022


Author: Roger Ferrer Ibanez
Date: 2022-03-23T17:27:05Z
New Revision: d2663fcc391dcf2e6e79138b2ef21db2f75e16e5

URL: https://github.com/llvm/llvm-project/commit/d2663fcc391dcf2e6e79138b2ef21db2f75e16e5
DIFF: https://github.com/llvm/llvm-project/commit/d2663fcc391dcf2e6e79138b2ef21db2f75e16e5.diff

LOG: [flang][Evaluate] Fold DBLE

We can reuse the folding of REAL.

Differential Revision: https://reviews.llvm.org/D122214

Added: 
    flang/test/Evaluate/fold-dble.f90

Modified: 
    flang/lib/Evaluate/fold-real.cpp

Removed: 
    


################################################################################
diff  --git a/flang/lib/Evaluate/fold-real.cpp b/flang/lib/Evaluate/fold-real.cpp
index 0d9de1346bd44..4ae8cc207d1c2 100644
--- a/flang/lib/Evaluate/fold-real.cpp
+++ b/flang/lib/Evaluate/fold-real.cpp
@@ -127,7 +127,7 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
   } else if (name == "product") {
     auto one{Scalar<T>::FromInteger(value::Integer<8>{1}).value};
     return FoldProduct<T>(context, std::move(funcRef), one);
-  } else if (name == "real") {
+  } else if (name == "real" || name == "dble") {
     if (auto *expr{args[0].value().UnwrapExpr()}) {
       return ToReal<KIND>(context, std::move(*expr));
     }

diff  --git a/flang/test/Evaluate/fold-dble.f90 b/flang/test/Evaluate/fold-dble.f90
new file mode 100644
index 0000000000000..523fa8c520672
--- /dev/null
+++ b/flang/test/Evaluate/fold-dble.f90
@@ -0,0 +1,10 @@
+! RUN: %python %S/test_folding.py %s %flang_fc1
+! Tests folding of DBLE()
+module ft_data
+  integer nx, ny, nz
+  parameter (nx=64, ny=64, nz=64, maxdim=64)
+  double precision ntotal_f
+  parameter (ntotal_f =  dble(nx)*ny*nz)
+  logical, parameter :: test_dble_1 = ntotal_f == real(nx*ny*nz, kind(0.0D0))
+  logical, parameter :: test_dble_2 = kind(dble(nx)) == kind(0.0D0)
+end module ft_data


        


More information about the flang-commits mailing list