Implement the suggested check to ensure that out-of-range float constants
don't get accepted by LLVM accidentally. Adjust the supporting test cases
as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24963
91177308-0d34-0410-b5e6-
96231b3b80d8
// TODO: Figure out how to test if a double can be cast to a float!
case Type::FloatTyID:
+ float FV = float(Val);
+ double DV = double(FV);
+ return IsNAN(Val) || Val == DV;
case Type::DoubleTyID:
return true; // This is the largest type...
}
+++ /dev/null
-; RUN: llvm-as < %s -o /dev/null -f
-
-; make sure that 'float' values have their value properly truncated.
-
-global float 0x1
; RUN: llvm-as %s -o /dev/null 2>&1 | grep "constant invalid for type"
-; XFAIL: *
;; This is a testcase for PR409
--- /dev/null
+; RUN: llvm-as < %s -o /dev/null -f
+; XFAIL: *
+
+; make sure that invalid 'float' values are caught.
+
+global float 0x1