llvm/clang/test/Driver/fexcess-precision.c

// 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: not %clang -### --target=i386 -fexcess-precision=none -c %s 2>&1  \
// RUN:   | FileCheck --check-prefix=CHECK-ERR-NONE %s
// RUN: not %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: not %clang -### --target=x86_64 -fexcess-precision=none -c %s 2>&1 \
// RUN:   | FileCheck --check-prefixes=CHECK-ERR-NONE %s
// RUN: not %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: not %clang -### --target=aarch64 -fexcess-precision=16 -c %s 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-ERR-16 %s
// RUN: not %clang_cl -### --target=aarch64 -fexcess-precision=16 -c -- %s 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-ERR-16 %s

// RUN: not %clang -### --target=aarch64 -fexcess-precision=none -c %s 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-ERR-NONE %s
// RUN: not %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-FAST: "-fbfloat16-excess-precision=fast"
// CHECK-STD: "-ffloat16-excess-precision=standard"
// CHECK-STD: "-fbfloat16-excess-precision=standard"
// CHECK-NONE: "-ffloat16-excess-precision=none"
// CHECK-NONE: "-fbfloat16-excess-precision=none"
// CHECK-ERR-NONE: unsupported argument 'none' to option '-fexcess-precision='
// CHECK: "-cc1"
// CHECK-NOT: "-ffloat16-excess-precision=fast"
// CHECK-NOT: "-fbfloat16-excess-precision=fast"
// CHECK-ERR-16: unsupported argument '16' to option '-fexcess-precision='