diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-11-25 19:00:29 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-11-25 19:00:29 +0000 |
commit | 88f2d6c167a575e5d9c62ecb211ff4d825b09ed3 (patch) | |
tree | dbd39813ba5553bff2dcc2e800a61744e1ab1081 | |
parent | 878ef1d5bc3b2d12f58fbd796a4ac91b163c88f0 (diff) |
convertToSignExtendedInteger should return opInvalidOp instead of asserting if sematics of float does not allow arithmetics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60042 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Support/APFloat.cpp | 8 | ||||
-rw-r--r-- | test/Transforms/IndVarsSimplify/2008-11-25-APFloatAssert.ll | 11 |
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp index a65e55afb5..128fee4f01 100644 --- a/lib/Support/APFloat.cpp +++ b/lib/Support/APFloat.cpp @@ -117,6 +117,11 @@ namespace { && "Compile-time arithmetic does not support these semantics"); } + static inline bool + isArithmeticOk(const llvm::fltSemantics &semantics) { + return semantics.arithmeticOK; + } + /* Return the value of a decimal exponent of the form [+-]ddddddd. @@ -1787,7 +1792,8 @@ APFloat::convertToSignExtendedInteger(integerPart *parts, unsigned int width, const integerPart *src; unsigned int dstPartsCount, truncatedBits; - assertArithmeticOK(*semantics); + if (!isArithmeticOk(*semantics)) + return opInvalidOp; *isExact = false; diff --git a/test/Transforms/IndVarsSimplify/2008-11-25-APFloatAssert.ll b/test/Transforms/IndVarsSimplify/2008-11-25-APFloatAssert.ll new file mode 100644 index 0000000000..9fd0eb9e65 --- /dev/null +++ b/test/Transforms/IndVarsSimplify/2008-11-25-APFloatAssert.ll @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | opt -indvars + +define void @t() nounwind { +entry: + br label %bb23.i91 + +bb23.i91: ; preds = %bb23.i91, %entry + %result.0.i89 = phi ppc_fp128 [ 0xM00000000000000000000000000000000, %entry ], [ %0, %bb23.i91 ] ; <ppc_fp128> [#uses=2] + %0 = mul ppc_fp128 %result.0.i89, %result.0.i89 ; <ppc_fp128> [#uses=1] + br label %bb23.i91 +} |