summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorMelanie Blower <melanie.blower@intel.com>2019-12-04 12:23:46 -0800
committerMelanie Blower <melanie.blower@intel.com>2019-12-05 03:48:04 -0800
commit7f9b5138470db1dc58f3bc05631284c653c9ed7a (patch)
tree6df6dcd5ce5f7d56fcef6e72ab2c3f287bce860e /clang/lib/Sema/SemaExpr.cpp
parentc16f0b18c13e88fedaa510bc2442bb693a6230c8 (diff)
downloadbcm5719-llvm-7f9b5138470db1dc58f3bc05631284c653c9ed7a.tar.gz
bcm5719-llvm-7f9b5138470db1dc58f3bc05631284c653c9ed7a.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. In the 2nd attempt to reapply there was a windows lit test fail, the tests were fixed to use wildcard matching. Differential Revision: https://reviews.llvm.org/D62731
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-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