diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1579,6 +1579,7 @@ HelpText<"Enable support for ignoring exception handling constructs">, MarshallingInfoFlag>; def fexcess_precision_EQ : Joined<["-"], "fexcess-precision=">, Group, + Flags<[CoreOption]>, HelpText<"Allows control over excess precision on targets where native " "support for the precision types is not available. By default, excess " "precision is used to calculate intermediate results following the " diff --git a/clang/test/Driver/fexcess-precision.c b/clang/test/Driver/fexcess-precision.c --- a/clang/test/Driver/fexcess-precision.c +++ b/clang/test/Driver/fexcess-precision.c @@ -1,29 +1,65 @@ +// Note: %s must be preceded by --, otherwise it may be interpreted as a +// command-line option, e.g. on Mac where %s is commonly under /Users. + // RUN: %clang -### -target i386 -fexcess-precision=fast -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-FAST %s +// RUN: %clang_cl -### -target i386 -fexcess-precision=fast -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-FAST %s + // RUN: %clang -### -target i386 -fexcess-precision=standard -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-STD %s +// RUN: %clang_cl -### -target i386 -fexcess-precision=standard -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-STD %s + // RUN: %clang -### -target i386 -fexcess-precision=16 -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-NONE %s +// RUN: %clang_cl -### -target i386 -fexcess-precision=16 -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NONE %s + // RUN: %clang -### -target i386 -fexcess-precision=none -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-ERR-NONE %s +// RUN: %clang_cl -### -target i386 -fexcess-precision=none -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ERR-NONE %s // RUN: %clang -### -target x86_64 -fexcess-precision=fast -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-FAST %s +// RUN: %clang_cl -### -target x86_64 -fexcess-precision=fast -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-FAST %s + // RUN: %clang -### -target x86_64 -fexcess-precision=standard -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-STD %s +// RUN: %clang_cl -### -target x86_64 -fexcess-precision=standard -c \ +// RUN: -- %s 2>&1 | FileCheck --check-prefix=CHECK-STD %s + // RUN: %clang -### -target x86_64 -fexcess-precision=16 -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-NONE %s +// RUN: %clang_cl -### -target x86_64 -fexcess-precision=16 -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NONE %s + // RUN: %clang -### -target x86_64 -fexcess-precision=none -c %s 2>&1 \ // RUN: | FileCheck --check-prefixes=CHECK-ERR-NONE %s +// RUN: %clang_cl -### -target x86_64 -fexcess-precision=none -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefixes=CHECK-ERR-NONE %s // RUN: %clang -### -target aarch64 -fexcess-precision=fast -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK %s +// RUN: %clang_cl -### -target aarch64 -fexcess-precision=fast -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK %s + // RUN: %clang -### -target aarch64 -fexcess-precision=standard -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK %s +// RUN: %clang_cl -### -target aarch64 -fexcess-precision=standard -c \ +// RUN: -- %s 2>&1 | FileCheck --check-prefix=CHECK %s + // RUN: %clang -### -target aarch64 -fexcess-precision=16 -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-ERR-16 %s +// RUN: %clang_cl -### -target aarch64 -fexcess-precision=16 -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ERR-16 %s + // RUN: %clang -### -target aarch64 -fexcess-precision=none -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-ERR-NONE %s +// RUN: %clang_cl -### -target aarch64 -fexcess-precision=none -c -- %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ERR-NONE %s // CHECK-FAST: "-ffloat16-excess-precision=fast" // CHECK-STD: "-ffloat16-excess-precision=standard"