Index: Core/DataExtractor.cpp
===================================================================
--- Core/DataExtractor.cpp	(revision 189623)
+++ Core/DataExtractor.cpp	(working copy)
@@ -1754,7 +1754,10 @@
                             {
                                 llvm::APInt apint(item_bit_size, this->GetMaxU64(&offset, item_byte_size));
                                 llvm::APFloat apfloat (ast->getFloatTypeSemantics(ast->FloatTy), apint);
-                                apfloat.toString(sv, format_precision, format_max_padding);
+
+                                unsigned float_precision = llvm::APFloat::semanticsPrecision(apfloat.getSemantics());
+                                float_precision = (float_precision * 59 + 195) / 196; // see r189624
+                                apfloat.toString(sv, float_precision, format_max_padding);
                             }
                             else if (item_bit_size == ast->getTypeSize(ast->DoubleTy))
                             {
