summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorMelanie Blower <melanie.blower@intel.com>2019-12-02 11:22:52 -0800
committerMelanie Blower <melanie.blower@intel.com>2019-12-04 11:32:33 -0800
commitcdbed2dd856c14687efd741c2d8321686102acb8 (patch)
treea51de1b31c871c79e7d2486466463562cdaa9a7d /clang/lib/Sema
parent75bbbeec74bbac327768a636d025f292a955c672 (diff)
downloadbcm5719-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.cpp10
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
OpenPOWER on IntegriCloud