diff options
author | Tom Eccles <tom.eccles@arm.com> | 2022-10-17 20:45:15 +0300 |
---|---|---|
committer | Tom Eccles <tom.eccles@arm.com> | 2022-11-04 20:22:34 +0300 |
commit | b5e93e390c06602cb03121ad875e2855253e2937 (patch) | |
tree | 022705723cbd69dd3f0e99c167bbd72b1496d46d /flang | |
parent | a7fa5febaa43d860cbd6a4061f239b283c4d8032 (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.def | 2 | ||||
-rw-r--r-- | flang/lib/Frontend/CompilerInvocation.cpp | 6 | ||||
-rw-r--r-- | flang/test/Driver/driver-help.f90 | 1 | ||||
-rw-r--r-- | flang/test/Driver/flang_fp_opts.f90 | 7 | ||||
-rw-r--r-- | flang/test/Driver/frontend-forwarding.f90 | 2 |
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" |