]> granicus.if.org Git - clang/commit
Use FPContractModeKind universally
authorAdam Nemet <anemet@apple.com>
Wed, 29 Mar 2017 20:39:49 +0000 (20:39 +0000)
committerAdam Nemet <anemet@apple.com>
Wed, 29 Mar 2017 20:39:49 +0000 (20:39 +0000)
commit66c3ea0d3b0f08172cab81f628a2f47d023af2ba
treea87770d5cf38c99f3d3b7966c7ae91875266bfd8
parent02bf8398f06ccc4cf21ceab6b89ca36b8a61075e
Use FPContractModeKind universally

FPContractModeKind is the codegen option flag which is already ternary (off,
on, fast).  This makes it universally the type for the contractable info
across the front-end:

* In FPOptions (i.e. in the Sema + in the expression nodes).
* In LangOpts::DefaultFPContractMode which is the option that initializes
FPOptions in the Sema.

Another way to look at this change is that before fp-contractable on/off were
the only states handled to the front-end:
 * For "on", FMA folding was performed by  the front-end
 * For "fast", we simply forwarded the flag to TargetOptions to handle it in
 LLVM

Now off/on/fast are all exposed because for fast we will generate
fast-math-flags during CodeGen.

This is toward moving fp-contraction=fast from an LLVM TargetOption to a
FastMathFlag in order to fix PR25721.

Differential Revision: https://reviews.llvm.org/D31167

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299027 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Expr.h
include/clang/AST/ExprCXX.h
include/clang/Basic/LangOptions.def
include/clang/Basic/LangOptions.h
include/clang/Frontend/CodeGenOptions.def
include/clang/Frontend/CodeGenOptions.h
lib/CodeGen/BackendUtil.cpp
lib/CodeGen/CGExprScalar.cpp
lib/Frontend/CompilerInvocation.cpp
lib/Sema/SemaAttr.cpp