Index: flang/lib/Evaluate/fold-real.cpp =================================================================== --- flang/lib/Evaluate/fold-real.cpp +++ flang/lib/Evaluate/fold-real.cpp @@ -127,7 +127,7 @@ } else if (name == "product") { auto one{Scalar::FromInteger(value::Integer<8>{1}).value}; return FoldProduct(context, std::move(funcRef), one); - } else if (name == "real") { + } else if (name == "real" || name == "dble") { if (auto *expr{args[0].value().UnwrapExpr()}) { return ToReal(context, std::move(*expr)); } Index: flang/test/Evaluate/fold-dble.f90 =================================================================== --- /dev/null +++ flang/test/Evaluate/fold-dble.f90 @@ -0,0 +1,8 @@ +! 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) +end module ft_data