The intention is to make APFloat an interface class, so that later I can add a second implementation class DoubleAPFloat to correctly implement PPCDoubleDouble semantic. The interface of IEEEFloat is not public, and can be simplified (currently it's exactly the same as the old APFloat), but that (if exists) belongs to a separate patch.
DoubleAPFloat should look like:
class DoubleAPFloat { const fltSemantics *Semantics; std::unique_ptr<APFloat[]> APFloats; // Two heap-allocated APFloats. };
There is no functional change, nor public interface change.
I think this should be named APFloatBase (e.g. we have DenseMapBase, SmallPtrSetImplBase, StringMapEntryBase).