
Currently `__FINITE_MATH_ONLY__` is set when `FiniteMathOnly`. And `FiniteMathOnly` is set when `NoHonorInfs` && `NoHonorNans` is true. But what happens one of the latter flags is false? To avoid potential inconsistencies, the internal option `FiniteMathOnly` is removed option and the macro `__FINITE_MATH_ONLY__` is set when `NoHonorInfs` && `NoHonorNans`.
20 lines
673 B
C
20 lines
673 B
C
// RUN: %clang_cc1 -menable-no-infs -menable-no-nans -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK -check-prefix=FINITE
|
|
// RUN: %clang_cc1 -fno-signed-zeros -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK -check-prefix=NSZ
|
|
// RUN: %clang_cc1 -freciprocal-math -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK -check-prefix=RECIP
|
|
// RUN: %clang_cc1 -mreassociate -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK -check-prefix=REASSOC
|
|
|
|
float f0, f1, f2;
|
|
|
|
void foo(void) {
|
|
// CHECK-LABEL: define {{.*}}void @foo()
|
|
|
|
// FINITE: fadd nnan ninf
|
|
// NSZ: fadd nsz
|
|
// RECIP: fadd arcp
|
|
// REASSOC: fadd reassoc
|
|
f0 = f1 + f2;
|
|
|
|
// CHECK: ret
|
|
}
|
|
|