On Wed, Sep 23, 2009 at 2:38 AM, Janis Johnson <janis...@us.ibm.com> wrote: > I've been implementing ISO/IEC TR 24733, "an extension for the > programming language C++ to support decimal floating-point arithmetic", > in GCC. It might be ready as an experimental feature for 4.5, but I > would particularly like to get in the compiler changes that are needed > for it. > > Most of the support for the TR is in new header files in libstdc++ that > depend on compiler support for decimal float scalar types. Most of that > compiler functionality was already available in G++ via mode attributes. > I've made a couple of small fixes and have a couple more to submit, and > when those are in I'll starting running dfp tests for C++ as well as C. > The suitable tests have already been moved from gcc.dg to c-c++-common. > > In order to provide interoperability with C, people on the C++ ABI > mailing list suggested that a C++ compiler should recognize the new > decimal classes defined in the TR and pass arguments of those types the > same as scalar decimal float types for a particular target. I had this > working in an ugly way using a langhook, but that broke with LTO. I'm > looking for the right places to record that an argument or return value > should be passed as if it were a different type, but could use some > advice about that.
How do we (do we?) handle std::complex<> there? My first shot would be to make sure the aggregate type has the proper mode, but I guess most target ABIs would already pass them in registers, no? Richard.