mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-01 02:33:44 +00:00
For PR409: \
Test the range of float constants to ensure we are not attempting to create a \ float constant using a double value that is out of range for a float git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18585 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9f9b3acfce
commit
b9ce8b3f1b
@ -21,6 +21,7 @@
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
using namespace llvm;
|
||||
|
||||
ConstantBool *ConstantBool::True = new ConstantBool(true);
|
||||
@ -442,6 +443,16 @@ bool ConstantFP::isValueValidForType(const Type *Ty, double Val) {
|
||||
|
||||
// TODO: Figure out how to test if a double can be cast to a float!
|
||||
case Type::FloatTyID:
|
||||
return
|
||||
(std::numeric_limits<double>::has_infinity &&
|
||||
std::numeric_limits<float>::has_infinity &&
|
||||
Val == std::numeric_limits<double>::infinity()) ||
|
||||
(std::numeric_limits<double>::has_quiet_NaN &&
|
||||
std::numeric_limits<float>::has_quiet_NaN &&
|
||||
Val == std::numeric_limits<double>::quiet_NaN()) ||
|
||||
(Val >= -std::numeric_limits<float>::max() &&
|
||||
Val <= std::numeric_limits<float>::max());
|
||||
|
||||
case Type::DoubleTyID:
|
||||
return true; // This is the largest type...
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user