Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/flang
diff options
context:
space:
mode:
authorTom Eccles <tom.eccles@arm.com>2022-10-17 20:45:15 +0300
committerTom Eccles <tom.eccles@arm.com>2022-11-04 20:22:34 +0300
commitb5e93e390c06602cb03121ad875e2855253e2937 (patch)
tree022705723cbd69dd3f0e99c167bbd72b1496d46d /flang
parenta7fa5febaa43d860cbd6a4061f239b283c4d8032 (diff)
[flang] Add -f[no-]honor-nans and -menable-no-nans
Only add the option processing and store the result. No attributes are added to FIR yet. Differential Revision: https://reviews.llvm.org/D137325
Diffstat (limited to 'flang')
-rw-r--r--flang/include/flang/Frontend/LangOptions.def2
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp6
-rw-r--r--flang/test/Driver/driver-help.f901
-rw-r--r--flang/test/Driver/flang_fp_opts.f907
-rw-r--r--flang/test/Driver/frontend-forwarding.f902
5 files changed, 17 insertions, 1 deletions
diff --git a/flang/include/flang/Frontend/LangOptions.def b/flang/include/flang/Frontend/LangOptions.def
index 96e9ea63f196..6bafc0613d3b 100644
--- a/flang/include/flang/Frontend/LangOptions.def
+++ b/flang/include/flang/Frontend/LangOptions.def
@@ -23,6 +23,8 @@ ENUM_LANGOPT(FPContractMode, FPModeKind, 2, FPM_Off) ///< FP Contract Mode (off/
/// Permit floating point optimization without regard to infinities
LANGOPT(NoHonorInfs, 1, false)
+/// Permit floating point optimization without regard to NaN
+LANGOPT(NoHonorNaNs, 1, false)
#undef LANGOPT
#undef ENUM_LANGOPT
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 252e1a7e697a..cce97caea515 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -702,6 +702,12 @@ static bool parseFloatingPointArgs(CompilerInvocation &invoc,
opts.NoHonorInfs = true;
}
+ if (const llvm::opt::Arg *a =
+ args.getLastArg(clang::driver::options::OPT_menable_no_nans)) {
+ diags.Report(diagUnimplemented) << a->getOption().getName();
+ opts.NoHonorNaNs = true;
+ }
+
return true;
}
diff --git a/flang/test/Driver/driver-help.f90 b/flang/test/Driver/driver-help.f90
index 068985bc6d56..587c0ec2ffcb 100644
--- a/flang/test/Driver/driver-help.f90
+++ b/flang/test/Driver/driver-help.f90
@@ -131,6 +131,7 @@
! HELP-FC1-NEXT: -I <dir> Add directory to the end of the list of include search paths
! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object)
! HELP-FC1-NEXT: -menable-no-infs Allow optimization to assume there are no infinities.
+! HELP-FC1-NEXT: -menable-no-nans Allow optimization to assume there are no NaNs.
! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir>
diff --git a/flang/test/Driver/flang_fp_opts.f90 b/flang/test/Driver/flang_fp_opts.f90
index 272ef8495b95..79f1ba796a4a 100644
--- a/flang/test/Driver/flang_fp_opts.f90
+++ b/flang/test/Driver/flang_fp_opts.f90
@@ -1,5 +1,10 @@
! Test for handling of floating point options within the frontend driver
-! RUN: %flang_fc1 -ffp-contract=fast -menable-no-infs %s 2>&1 | FileCheck %s
+! RUN: %flang_fc1 \
+! RUN: -ffp-contract=fast \
+! RUN: -menable-no-infs \
+! RUN: -menable-no-nans \
+! RUN: %s 2>&1 | FileCheck %s
! CHECK: ffp-contract= is not currently implemented
! CHECK: menable-no-infs is not currently implemented
+! CHECK: menable-no-nans is not currently implemented
diff --git a/flang/test/Driver/frontend-forwarding.f90 b/flang/test/Driver/frontend-forwarding.f90
index 0c3fd6c48ee2..1160509a500c 100644
--- a/flang/test/Driver/frontend-forwarding.f90
+++ b/flang/test/Driver/frontend-forwarding.f90
@@ -10,6 +10,7 @@
! RUN: -fconvert=little-endian \
! RUN: -ffp-contract=fast \
! RUN: -fno-honor-infinities \
+! RUN: -fno-honor-nans \
! RUN: -mllvm -print-before-all\
! RUN: -P \
! RUN: | FileCheck %s
@@ -22,5 +23,6 @@
! CHECK: "-flarge-sizes"
! CHECK: "-ffp-contract=fast"
! CHECK: "-menable-no-infs"
+! CHECK: "-menable-no-nans"
! CHECK: "-fconvert=little-endian"
! CHECK: "-mllvm" "-print-before-all"