diff options
| author | Melanie Blower <melanie.blower@intel.com> | 2019-12-02 11:22:52 -0800 |
|---|---|---|
| committer | Melanie Blower <melanie.blower@intel.com> | 2019-12-04 11:32:33 -0800 |
| commit | cdbed2dd856c14687efd741c2d8321686102acb8 (patch) | |
| tree | a51de1b31c871c79e7d2486466463562cdaa9a7d /clang/lib/Sema | |
| parent | 75bbbeec74bbac327768a636d025f292a955c672 (diff) | |
| download | bcm5719-llvm-cdbed2dd856c14687efd741c2d8321686102acb8.tar.gz bcm5719-llvm-cdbed2dd856c14687efd741c2d8321686102acb8.zip | |
Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior="
Patch was reverted because https://bugs.llvm.org/show_bug.cgi?id=44048
The original patch is modified to set the strictfp IR attribute
explicitly in CodeGen instead of as a side effect of IRBuilder
Differential Revision: https://reviews.llvm.org/D62731
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 7bbda127a54..c53a4b789be 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -13037,6 +13037,16 @@ ExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, if (ResultTy.isNull() || LHS.isInvalid() || RHS.isInvalid()) return ExprError(); + if (ResultTy->isRealFloatingType() && + (getLangOpts().getFPRoundingMode() != LangOptions::FPR_ToNearest || + getLangOpts().getFPExceptionMode() != LangOptions::FPE_Ignore)) + // Mark the current function as usng floating point constrained intrinsics + if (FunctionDecl *F = dyn_cast<FunctionDecl>(CurContext)) +{ + F->setUsesFPIntrin(true); + printf("Enclosing function uses fp intrinsics\n"); +} + // Some of the binary operations require promoting operands of half vector to // float vectors and truncating the result back to half vector. For now, we do // this only when HalfArgsAndReturn is set (that is, when the target is arm or |

