Fix a problem brian ran into with the bytecode reader asserting. It turns
authorChris Lattner <sabre@nondot.org>
Fri, 23 Jan 2004 00:55:21 +0000 (00:55 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 23 Jan 2004 00:55:21 +0000 (00:55 +0000)
out that the problem was actually the writer writing out a 'null' value
because it didn't normalize it.  This fixes:
test/Regression/Assembler/2004-01-22-FloatNormalization.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10967 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Constants.cpp

index e0daca5a66daa232f3254680fd90a30ed5ee2c28..8b108c23354644dfe8de565a90f5d50148dc6cf6 100644 (file)
@@ -701,6 +701,11 @@ ConstantInt *ConstantInt::get(const Type *Ty, unsigned char V) {
 static ValueMap<double, Type, ConstantFP> FPConstants;
 
 ConstantFP *ConstantFP::get(const Type *Ty, double V) {
+  if (Ty == Type::FloatTy) {
+    // Force the value through memory to normalize it.
+    volatile float Tmp = V;
+    V = Tmp;
+  }
   return FPConstants.getOrCreate(Ty, V);
 }