https://github.com/s-watanabe314 updated 
https://github.com/llvm/llvm-project/pull/132680

>From 9265cb96cc3129fada722d7195a1cf04e985ba33 Mon Sep 17 00:00:00 2001
From: s-watanabe314 <watanabe.shu...@fujitsu.com>
Date: Fri, 14 Mar 2025 11:56:32 +0900
Subject: [PATCH 1/3] [Clang][Driver] Override complex number calculation
 method by -fno-fast-math

This patch fixes a bug where -fno-fast-math doesn't revert the complex
number calculation method to the default. The priority of overriding
options related to complex number calculations differs slightly from
GCC, as discussed in:

https://discourse.llvm.org/t/the-priority-of-fno-fast-math-regarding-complex-number-calculations/84679
---
 clang/lib/Driver/ToolChains/Clang.cpp | 22 +++++++++-
 clang/test/Driver/range.c             | 61 +++++++++++++++++++++++----
 2 files changed, 74 insertions(+), 9 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index fb3ed2db0e3c0..484ced9885883 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2997,6 +2997,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
   LangOptions::ComplexRangeKind Range = LangOptions::ComplexRangeKind::CX_None;
   std::string ComplexRangeStr = "";
   std::string GccRangeComplexOption = "";
+  std::string LastComplexRangeOption = "";
 
   auto setComplexRange = [&](LangOptions::ComplexRangeKind NewRange) {
     // Warn if user expects to perform full implementation of complex
@@ -3015,7 +3016,12 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
     if (Aggressive) {
       HonorINFs = false;
       HonorNaNs = false;
-      setComplexRange(LangOptions::ComplexRangeKind::CX_Basic);
+      // If the last specified option related to complex range is
+      // -fno-fast-math, override 'Range' without warning.
+      if (LastComplexRangeOption == "-fno-fast-math")
+        Range = LangOptions::ComplexRangeKind::CX_Basic;
+      else
+        setComplexRange(LangOptions::ComplexRangeKind::CX_Basic);
     } else {
       HonorINFs = true;
       HonorNaNs = true;
@@ -3080,6 +3086,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
           EmitComplexRangeDiag(D, GccRangeComplexOption, "-fcx-limited-range");
       }
       GccRangeComplexOption = "-fcx-limited-range";
+      LastComplexRangeOption = "-fcx-limited-range";
       Range = LangOptions::ComplexRangeKind::CX_Basic;
       break;
     case options::OPT_fno_cx_limited_range:
@@ -3093,6 +3100,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                "-fno-cx-limited-range");
       }
       GccRangeComplexOption = "-fno-cx-limited-range";
+      LastComplexRangeOption = "-fno-cx-limited-range";
       Range = LangOptions::ComplexRangeKind::CX_Full;
       break;
     case options::OPT_fcx_fortran_rules:
@@ -3102,6 +3110,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       else
         EmitComplexRangeDiag(D, GccRangeComplexOption, "-fcx-fortran-rules");
       GccRangeComplexOption = "-fcx-fortran-rules";
+      LastComplexRangeOption = "-fcx-fortran-rules";
       Range = LangOptions::ComplexRangeKind::CX_Improved;
       break;
     case options::OPT_fno_cx_fortran_rules:
@@ -3114,6 +3123,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                "-fno-cx-fortran-rules");
       }
       GccRangeComplexOption = "-fno-cx-fortran-rules";
+      LastComplexRangeOption = "-fno-cx-fortran-rules";
       Range = LangOptions::ComplexRangeKind::CX_Full;
       break;
     case options::OPT_fcomplex_arithmetic_EQ: {
@@ -3148,6 +3158,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                  ComplexArithmeticStr(RangeVal));
         }
       }
+      LastComplexRangeOption = "-fcomplex-arithmetic";
       Range = RangeVal;
       break;
     }
@@ -3201,6 +3212,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       } else
         D.Diag(diag::err_drv_unsupported_option_argument)
             << A->getSpelling() << Val;
+      LastComplexRangeOption = "-ffp-model";
       break;
     }
 
@@ -3386,6 +3398,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       [[fallthrough]];
     case options::OPT_ffast_math:
       applyFastMath(true);
+      LastComplexRangeOption = "-ffast-math";
       if (A->getOption().getID() == options::OPT_Ofast)
         LastFpContractOverrideOption = "-Ofast";
       else
@@ -3403,6 +3416,13 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       ApproxFunc = false;
       SignedZeros = true;
       restoreFPContractState();
+      // If the last specified option related to complex range is -ffast-math,
+      // override 'Range' without warning.
+      if (LastComplexRangeOption == "-ffast-math")
+        Range = LangOptions::ComplexRangeKind::CX_Full;
+      else
+        setComplexRange(LangOptions::ComplexRangeKind::CX_Full);
+      LastComplexRangeOption = "-fno-fast-math";
       LastFpContractOverrideOption = "";
       break;
     } // End switch (A->getOption().getID())
diff --git a/clang/test/Driver/range.c b/clang/test/Driver/range.c
index da5748d7c723c..315b54ea693a2 100644
--- a/clang/test/Driver/range.c
+++ b/clang/test/Driver/range.c
@@ -177,14 +177,45 @@
 // RUN: %clang -### -target x86_64 -ffast-math -fcomplex-arithmetic=basic -c 
%s 2>&1 \
 // RUN:   | FileCheck --check-prefix=BASIC %s
 
-// BASIC: -complex-range=basic
-// FULL: -complex-range=full
-// PRMTD: -complex-range=promoted
-// BASIC-NOT: -complex-range=improved
-// CHECK-NOT: -complex-range=basic
-// IMPRVD: -complex-range=improved
-// IMPRVD-NOT: -complex-range=basic
-// CHECK-NOT: -complex-range=improved
+// RUN: %clang -### -target x86_64 -fcx-limited-range -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN21 %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-cx-limited-range 
-fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -target x86_64 -fcx-fortran-rules -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN22 %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-cx-fortran-rules 
-fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -Werror -target x86_64 -ffast-math -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=basic -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN23 %s
+
+// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=promoted 
-fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN24 %s
+
+// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=improved 
-fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN25 %s
+
+// RUN: %clang -### -Werror -target x86_64 -fcomplex-arithmetic=full 
-fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -target x86_64 -ffp-model=aggressive -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN23 %s
+
+// RUN: %clang -### -target x86_64 -ffp-model=fast -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN24 %s
+
+// RUN: %clang -### -Werror -target x86_64 -ffp-model=precise -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -Werror -target x86_64 -ffp-model=strict -fno-fast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
 
 // WARN1: warning: overriding '-fcx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
 // WARN2: warning: overriding '-fno-cx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
@@ -196,5 +227,19 @@
 // WARN14: overriding '-complex-range=promoted' option with 
'-fcx-limited-range' [-Woverriding-option]
 // WARN17: warning: overriding '-fcomplex-arithmetic=full' option with 
'-fcomplex-arithmetic=basic' [-Woverriding-option]
 // WARN20: warning: overriding '-fcx-fortran-rules' option with 
'-fcx-limited-range' [-Woverriding-option]
+// WARN21: warning: overriding '-fcx-limited-range' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+// WARN22: warning: overriding '-fcx-fortran-rules' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+// WARN23: warning: overriding '-fcomplex-arithmetic=basic' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+// WARN24: warning: overriding '-fcomplex-arithmetic=promoted' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+// WARN25: warning: overriding '-fcomplex-arithmetic=improved' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+
+// BASIC: -complex-range=basic
+// FULL: -complex-range=full
+// PRMTD: -complex-range=promoted
+// BASIC-NOT: -complex-range=improved
+// CHECK-NOT: -complex-range=basic
+// IMPRVD: -complex-range=improved
+// IMPRVD-NOT: -complex-range=basic
+// CHECK-NOT: -complex-range=improved
 
 // ERR: error: unsupported argument 'foo' to option '-fcomplex-arithmetic='

>From b0e198b2a0d2e93d9fd8038a9485cd5fd1a64841 Mon Sep 17 00:00:00 2001
From: s-watanabe314 <watanabe.shu...@fujitsu.com>
Date: Wed, 26 Mar 2025 18:01:20 +0900
Subject: [PATCH 2/3] Add test cases where -fno-fast-math is specified first

---
 clang/test/Driver/range.c | 44 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/clang/test/Driver/range.c b/clang/test/Driver/range.c
index 315b54ea693a2..96597b843d127 100644
--- a/clang/test/Driver/range.c
+++ b/clang/test/Driver/range.c
@@ -216,6 +216,44 @@
 // RUN: %clang -### -Werror -target x86_64 -ffp-model=strict -fno-fast-math \
 // RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
+// RUN: %clang -### -target x86_64 -fno-fast-math -fcx-limited-range \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC,WARN26 %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -fno-cx-limited-range \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -fcx-fortran-rules \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD,WARN27 %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -fno-cx-fortran-rules \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffast-math \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -fcomplex-arithmetic=basic \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=promoted \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=PRMTD %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=improved \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=full \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -ffp-model=aggressive \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+
+// RUN: %clang -### -target x86_64 -fno-fast-math -ffp-model=fast \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=PRMTD,WARN31 %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffp-model=precise \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+
+// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffp-model=strict \
+// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
 // WARN1: warning: overriding '-fcx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
 // WARN2: warning: overriding '-fno-cx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
@@ -232,6 +270,12 @@
 // WARN23: warning: overriding '-fcomplex-arithmetic=basic' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
 // WARN24: warning: overriding '-fcomplex-arithmetic=promoted' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
 // WARN25: warning: overriding '-fcomplex-arithmetic=improved' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
+// WARN26: warning: overriding '-complex-range=full' option with 
'-fcx-limited-range' [-Woverriding-option]
+// WARN27: warning: overriding '-complex-range=full' option with 
'-fcx-fortran-rules' [-Woverriding-option]
+// WARN28: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=basic' [-Woverriding-option]
+// WARN29: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=promoted' [-Woverriding-option]
+// WARN30: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=improved' [-Woverriding-option]
+// WARN31: warning: overriding '-fcomplex-arithmetic=full' option with 
'-fcomplex-arithmetic=promoted' [-Woverriding-option]
 
 // BASIC: -complex-range=basic
 // FULL: -complex-range=full

>From 8b947e28f2f058520287cedeac55f5850734b005 Mon Sep 17 00:00:00 2001
From: s-watanabe314 <watanabe.shu...@fujitsu.com>
Date: Tue, 3 Jun 2025 15:43:08 +0900
Subject: [PATCH 3/3] Fix warning message and condition

---
 clang/lib/Driver/ToolChains/Clang.cpp |  40 ++++-----
 clang/test/Driver/range.c             | 121 ++++++++++++--------------
 2 files changed, 77 insertions(+), 84 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 484ced9885883..c1ecb7ddefe65 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2997,7 +2997,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
   LangOptions::ComplexRangeKind Range = LangOptions::ComplexRangeKind::CX_None;
   std::string ComplexRangeStr = "";
   std::string GccRangeComplexOption = "";
-  std::string LastComplexRangeOption = "";
+  std::string LastComplexRangeOption;
 
   auto setComplexRange = [&](LangOptions::ComplexRangeKind NewRange) {
     // Warn if user expects to perform full implementation of complex
@@ -3016,12 +3016,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
     if (Aggressive) {
       HonorINFs = false;
       HonorNaNs = false;
-      // If the last specified option related to complex range is
-      // -fno-fast-math, override 'Range' without warning.
-      if (LastComplexRangeOption == "-fno-fast-math")
-        Range = LangOptions::ComplexRangeKind::CX_Basic;
-      else
-        setComplexRange(LangOptions::ComplexRangeKind::CX_Basic);
+      setComplexRange(LangOptions::ComplexRangeKind::CX_Basic);
     } else {
       HonorINFs = true;
       HonorNaNs = true;
@@ -3086,7 +3081,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
           EmitComplexRangeDiag(D, GccRangeComplexOption, "-fcx-limited-range");
       }
       GccRangeComplexOption = "-fcx-limited-range";
-      LastComplexRangeOption = "-fcx-limited-range";
+      LastComplexRangeOption = A->getSpelling();
       Range = LangOptions::ComplexRangeKind::CX_Basic;
       break;
     case options::OPT_fno_cx_limited_range:
@@ -3100,7 +3095,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                "-fno-cx-limited-range");
       }
       GccRangeComplexOption = "-fno-cx-limited-range";
-      LastComplexRangeOption = "-fno-cx-limited-range";
+      LastComplexRangeOption = A->getSpelling();
       Range = LangOptions::ComplexRangeKind::CX_Full;
       break;
     case options::OPT_fcx_fortran_rules:
@@ -3110,7 +3105,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       else
         EmitComplexRangeDiag(D, GccRangeComplexOption, "-fcx-fortran-rules");
       GccRangeComplexOption = "-fcx-fortran-rules";
-      LastComplexRangeOption = "-fcx-fortran-rules";
+      LastComplexRangeOption = A->getSpelling();
       Range = LangOptions::ComplexRangeKind::CX_Improved;
       break;
     case options::OPT_fno_cx_fortran_rules:
@@ -3123,7 +3118,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                "-fno-cx-fortran-rules");
       }
       GccRangeComplexOption = "-fno-cx-fortran-rules";
-      LastComplexRangeOption = "-fno-cx-fortran-rules";
+      LastComplexRangeOption = A->getSpelling();
       Range = LangOptions::ComplexRangeKind::CX_Full;
       break;
     case options::OPT_fcomplex_arithmetic_EQ: {
@@ -3158,7 +3153,8 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
                                  ComplexArithmeticStr(RangeVal));
         }
       }
-      LastComplexRangeOption = "-fcomplex-arithmetic";
+      LastComplexRangeOption =
+          Args.MakeArgString(A->getSpelling() + A->getValue());
       Range = RangeVal;
       break;
     }
@@ -3212,7 +3208,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       } else
         D.Diag(diag::err_drv_unsupported_option_argument)
             << A->getSpelling() << Val;
-      LastComplexRangeOption = "-ffp-model";
+      LastComplexRangeOption = A->getSpelling();
       break;
     }
 
@@ -3398,7 +3394,7 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       [[fallthrough]];
     case options::OPT_ffast_math:
       applyFastMath(true);
-      LastComplexRangeOption = "-ffast-math";
+      LastComplexRangeOption = A->getSpelling();
       if (A->getOption().getID() == options::OPT_Ofast)
         LastFpContractOverrideOption = "-Ofast";
       else
@@ -3416,13 +3412,15 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
       ApproxFunc = false;
       SignedZeros = true;
       restoreFPContractState();
-      // If the last specified option related to complex range is -ffast-math,
-      // override 'Range' without warning.
-      if (LastComplexRangeOption == "-ffast-math")
-        Range = LangOptions::ComplexRangeKind::CX_Full;
-      else
-        setComplexRange(LangOptions::ComplexRangeKind::CX_Full);
-      LastComplexRangeOption = "-fno-fast-math";
+      // If the last specified option related to complex range is not
+      // -ffast-math or -ffp-model=, emit warning.
+      if (LastComplexRangeOption != "-ffast-math" &&
+          LastComplexRangeOption != "-ffp-model=" &&
+          Range != LangOptions::ComplexRangeKind::CX_Full)
+        EmitComplexRangeDiag(D, LastComplexRangeOption, "-fno-fast-math");
+      Range = LangOptions::ComplexRangeKind::CX_None;
+      LastComplexRangeOption = "";
+      GccRangeComplexOption = "";
       LastFpContractOverrideOption = "";
       break;
     } // End switch (A->getOption().getID())
diff --git a/clang/test/Driver/range.c b/clang/test/Driver/range.c
index 96597b843d127..30140f3c208e0 100644
--- a/clang/test/Driver/range.c
+++ b/clang/test/Driver/range.c
@@ -177,83 +177,83 @@
 // RUN: %clang -### -target x86_64 -ffast-math -fcomplex-arithmetic=basic -c 
%s 2>&1 \
 // RUN:   | FileCheck --check-prefix=BASIC %s
 
-// RUN: %clang -### -target x86_64 -fcx-limited-range -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN21 %s
+// RUN: %clang -### --target=x86_64 -fcx-limited-range -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE,WARN21 %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-cx-limited-range 
-fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-cx-limited-range 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -target x86_64 -fcx-fortran-rules -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN22 %s
+// RUN: %clang -### --target=x86_64 -fcx-fortran-rules -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE,WARN22 %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-cx-fortran-rules 
-fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-cx-fortran-rules 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -Werror -target x86_64 -ffast-math -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -ffast-math -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=basic -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN23 %s
+// RUN: %clang -### --target=x86_64 -fcomplex-arithmetic=basic -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE,WARN23 %s
 
-// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=promoted 
-fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN24 %s
+// RUN: %clang -### --target=x86_64 -fcomplex-arithmetic=promoted 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE,WARN24 %s
 
-// RUN: %clang -### -target x86_64 -fcomplex-arithmetic=improved 
-fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN25 %s
+// RUN: %clang -### --target=x86_64 -fcomplex-arithmetic=improved 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE,WARN25 %s
 
-// RUN: %clang -### -Werror -target x86_64 -fcomplex-arithmetic=full 
-fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fcomplex-arithmetic=full 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -target x86_64 -ffp-model=aggressive -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN23 %s
+// RUN: %clang -### -Werror --target=x86_64 -ffp-model=aggressive 
-fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -target x86_64 -ffp-model=fast -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL,WARN24 %s
+// RUN: %clang -### -Werror --target=x86_64 -ffp-model=fast -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -Werror -target x86_64 -ffp-model=precise -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -ffp-model=precise -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -Werror -target x86_64 -ffp-model=strict -fno-fast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -ffp-model=strict -fno-fast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=RANGE %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -fcx-limited-range \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC,WARN26 %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -fcx-limited-range \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -fno-cx-limited-range \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fno-cx-limited-range \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -fcx-fortran-rules \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD,WARN27 %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -fcx-fortran-rules \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -fno-cx-fortran-rules \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fno-cx-fortran-rules \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffast-math \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -ffast-math \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -fcomplex-arithmetic=basic \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fcomplex-arithmetic=basic \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=promoted \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=PRMTD %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fcomplex-arithmetic=promoted \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=PRMTD %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=improved \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fcomplex-arithmetic=improved \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=IMPRVD %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-fast-math 
-fcomplex-arithmetic=full \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-fcomplex-arithmetic=full \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -ffp-model=aggressive \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math 
-ffp-model=aggressive \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=BASIC %s
 
-// RUN: %clang -### -target x86_64 -fno-fast-math -ffp-model=fast \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=PRMTD,WARN31 %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -ffp-model=fast \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=PRMTD %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffp-model=precise \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -ffp-model=precise \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
-// RUN: %clang -### -Werror -target x86_64 -fno-fast-math -ffp-model=strict \
-// RUN: -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
+// RUN: %clang -### -Werror --target=x86_64 -fno-fast-math -ffp-model=strict \
+// RUN:   -c %s 2>&1 | FileCheck --check-prefixes=FULL %s
 
 // WARN1: warning: overriding '-fcx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
 // WARN2: warning: overriding '-fno-cx-limited-range' option with 
'-fcx-fortran-rules' [-Woverriding-option]
@@ -265,17 +265,11 @@
 // WARN14: overriding '-complex-range=promoted' option with 
'-fcx-limited-range' [-Woverriding-option]
 // WARN17: warning: overriding '-fcomplex-arithmetic=full' option with 
'-fcomplex-arithmetic=basic' [-Woverriding-option]
 // WARN20: warning: overriding '-fcx-fortran-rules' option with 
'-fcx-limited-range' [-Woverriding-option]
-// WARN21: warning: overriding '-fcx-limited-range' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
-// WARN22: warning: overriding '-fcx-fortran-rules' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
-// WARN23: warning: overriding '-fcomplex-arithmetic=basic' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
-// WARN24: warning: overriding '-fcomplex-arithmetic=promoted' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
-// WARN25: warning: overriding '-fcomplex-arithmetic=improved' option with 
'-fcomplex-arithmetic=full' [-Woverriding-option]
-// WARN26: warning: overriding '-complex-range=full' option with 
'-fcx-limited-range' [-Woverriding-option]
-// WARN27: warning: overriding '-complex-range=full' option with 
'-fcx-fortran-rules' [-Woverriding-option]
-// WARN28: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=basic' [-Woverriding-option]
-// WARN29: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=promoted' [-Woverriding-option]
-// WARN30: warning: overriding '-complex-range=full' option with 
'-fcomplex-arithmetic=improved' [-Woverriding-option]
-// WARN31: warning: overriding '-fcomplex-arithmetic=full' option with 
'-fcomplex-arithmetic=promoted' [-Woverriding-option]
+// WARN21: warning: overriding '-fcx-limited-range' option with 
'-fno-fast-math' [-Woverriding-option]
+// WARN22: warning: overriding '-fcx-fortran-rules' option with 
'-fno-fast-math' [-Woverriding-option]
+// WARN23: warning: overriding '-fcomplex-arithmetic=basic' option with 
'-fno-fast-math' [-Woverriding-option]
+// WARN24: warning: overriding '-fcomplex-arithmetic=promoted' option with 
'-fno-fast-math' [-Woverriding-option]
+// WARN25: warning: overriding '-fcomplex-arithmetic=improved' option with 
'-fno-fast-math' [-Woverriding-option]
 
 // BASIC: -complex-range=basic
 // FULL: -complex-range=full
@@ -285,5 +279,6 @@
 // IMPRVD: -complex-range=improved
 // IMPRVD-NOT: -complex-range=basic
 // CHECK-NOT: -complex-range=improved
+// RANGE-NOT: -complex-range=
 
 // ERR: error: unsupported argument 'foo' to option '-fcomplex-arithmetic='

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to