[LLVMdev] StmtPrinter long double support.
dalej at apple.com
Fri Jun 6 09:47:26 PDT 2008
On Jun 6, 2008, at 8:51 AM, Jean-Daniel Dupas wrote:
> I'm playing with llvm/clang and I have a problem when I try to use
> the -ast-print options for a file that uses long double.
> The Basic/Targets.cpp file defined the x86 (and x86_64) long double
> type as APFloat::x87DoubleExtended.
> Then, when the AST printer try to write a long double literal value
> (using VisitFloatingLiteral()), it call FloatingLiteral-
> >getValueAsDouble() and the later does not support long double, so
> it try to call convertToDouble() as a fallback and crash due to an
> invalid assertion. APFloat.cpp:2631: failed assertion `semantics ==
> (const llvm::fltSemantics*)&IEEEdouble'
> This is a know issue as some there is some comments like "// FIXME:
> We need something for long double here." in FloatingLiteral-
> >getValueAsDouble(), and "// FIXME: print value more precisely." in
> I wonder what will be the best way to solve those both issue. Has
> somebody planned to add support for long double to APInt and APFloat ?
There are no plans to support the use of host long double anywhere, if
that's what you mean.
Probably this dumper should use APFloat::convert to get the long
double into APFloat::IEEEdouble format (with loss of precision; the
comment claims that's OK), then use convertToDouble on that. If you
want full precision, you'll need to print all the bits in hex; see
EmitGlobalConstant in AsmPrinter.cpp.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev