diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8d8965fdf76fb..7ceb248f7afb9 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -2705,7 +2705,7 @@ static StringRef EnumComplexRangeToStr(LangOptions::ComplexRangeKind Range) { static void EmitComplexRangeDiag(const Driver &D, LangOptions::ComplexRangeKind Range1, LangOptions::ComplexRangeKind Range2) { - if (Range1 != LangOptions::ComplexRangeKind::CX_Full) + if (Range1 != Range2 && Range1 != LangOptions::ComplexRangeKind::CX_None) D.Diag(clang::diag::warn_drv_overriding_option) << EnumComplexRangeToStr(Range1) << EnumComplexRangeToStr(Range2); } diff --git a/clang/test/Driver/range.c b/clang/test/Driver/range.c index 045d9c7d3d802..49116df2f4480 100644 --- a/clang/test/Driver/range.c +++ b/clang/test/Driver/range.c @@ -35,6 +35,12 @@ // RUN: %clang -### -target x86_64 -ffast-math -fno-cx-limited-range -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=FULL %s +// RUN: %clang -### -Werror -target x86_64 -fcx-limited-range -c %s 2>&1 \ +// RUN: | FileCheck --check-prefix=LMTD %s + +// RUN: %clang -### -Werror -target x86_64 -fcx-fortran-rules -c %s 2>&1 \ +// RUN: | FileCheck --check-prefix=FRTRN %s + // LMTD: -complex-range=limited // FULL: -complex-range=full // LMTD-NOT: -complex-range=fortran