forked from OSchip/llvm-project
Fix a long-standing bug where Clang had a different default from GCC on
Linux and other (non-Darwin) platforms and have it use -fmath-errno by default (for better or worse). Darwin has seen the light here and uses -fno-math-errno by default, this patch preserves that. If any maintainers for a non-Linux platform would also like to opt-in to -fno-math-errno by default, I'm happy to add folks, but we're currently getting buts and misleading comparisons with GCC due to this difference in behavior on Linux at least. llvm-svn: 155607
This commit is contained in:
parent
bc8c5b5d67
commit
3634c66b41
|
@ -1617,16 +1617,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
A->getOption().getID() != options::OPT_fhonor_nans)
|
||||
CmdArgs.push_back("-menable-no-nans");
|
||||
|
||||
// -fno-math-errno is default.
|
||||
bool MathErrno = false;
|
||||
// -fno-math-errno is default on Darwin. Other platforms, -fmath-errno is the
|
||||
// default.
|
||||
bool MathErrno = !getToolChain().getTriple().isOSDarwin();
|
||||
if (Arg *A = Args.getLastArg(options::OPT_ffast_math,
|
||||
options::OPT_fmath_errno,
|
||||
options::OPT_fno_math_errno)) {
|
||||
if (A->getOption().getID() == options::OPT_fmath_errno) {
|
||||
options::OPT_fno_math_errno))
|
||||
MathErrno = A->getOption().getID() == options::OPT_fmath_errno;
|
||||
if (MathErrno)
|
||||
CmdArgs.push_back("-fmath-errno");
|
||||
MathErrno = true;
|
||||
}
|
||||
}
|
||||
|
||||
// There are several flags which require disabling very specific
|
||||
// optimizations. Any of these being disabled forces us to turn off the
|
||||
|
|
|
@ -19,8 +19,15 @@
|
|||
// CHECK-MATH-ERRNO: "-cc1"
|
||||
// CHECK-MATH-ERRNO: "-fmath-errno"
|
||||
//
|
||||
// RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \
|
||||
// RUN: -fno-trapping-math -c %s 2>&1 \
|
||||
// RUN: %clang -### -fmath-errno -fno-math-errno -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
|
||||
// RUN: %clang -### -target i686-apple-darwin -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
|
||||
// CHECK-NO-MATH-ERRNO: "-cc1"
|
||||
// CHECK-NO-MATH-ERRNO-NOT: "-fmath-errno"
|
||||
//
|
||||
// RUN: %clang -### -fno-math-errno -fassociative-math -freciprocal-math \
|
||||
// RUN: -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s
|
||||
// CHECK-UNSAFE-MATH: "-cc1"
|
||||
// CHECK-UNSAFE-MATH: "-menable-unsafe-fp-math"
|
||||
|
@ -36,7 +43,7 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-NO-INFS %s
|
||||
// RUN: %clang -### -ffinite-math-only -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NO-NANS %s
|
||||
// RUN: %clang -### -funsafe-math-optimizations -c %s 2>&1 \
|
||||
// RUN: %clang -### -funsafe-math-optimizations -fno-math-errno -c %s 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s
|
||||
//
|
||||
// One umbrella flag is *really* weird and also changes the semantics of the
|
||||
|
|
Loading…
Reference in New Issue