On Mon, Sep 5, 2016 at 1:40 PM, Joseph Myers <jos...@codesourcery.com> wrote: > On Sat, 3 Sep 2016, Andreas Schwab wrote: > >> On Aug 17 2016, Joseph Myers <jos...@codesourcery.com> wrote: >> >> > Index: gcc/testsuite/gcc.dg/torture/float32-basic.c >> > =================================================================== >> > --- gcc/testsuite/gcc.dg/torture/float32-basic.c (nonexistent) >> > +++ gcc/testsuite/gcc.dg/torture/float32-basic.c (working copy) >> > @@ -0,0 +1,9 @@ >> > +/* Test _Float32. */ >> > +/* { dg-do run } */ >> > +/* { dg-options "" } */ >> > +/* { dg-add-options float32 } */ >> > +/* { dg-require-effective-target float32_runtime } */ >> > + >> > +#define WIDTH 32 >> > +#define EXT 0 >> > +#include "floatn-basic.h" >> >> This fails on powerpc32, in vafn. > > That seems like the alpha issue - an ABI needs to be defined and > implemented.
Note that this makes it maybe a good idea to only enable _FloatXX support for targets that have explicitely done so once we near the GCC 7 release. Otherwise we risk a later ABI change if the ABI differs from GCCs implementation from the time there was no ABI defined for those types. Richard. > Unfortunately the powerabi mailing list, which would have > been the right place for ABI coordination between implementors, died > several years ago. (The 32-bit ABI source code is available at > <https://github.com/ryanarn/powerabi>.) > > If we suppose that _Float32 values should be passed in FPRs in the same > circumstances in which float values are passed in FPRs, then > rs6000_gimplify_va_arg would, in the case of an SFmode value coming from > saved FPRs, need to extract a double value from the saved FPRs and then > convert to float. (There would also be the question of later _Float32 > arguments passed on the stack in variable arguments; if those are handled > like prototyped arguments, they would go in 4-byte stack slots, and > probably the compiler already does that.) Of course other ABI choices are > possible. > > -- > Joseph S. Myers > jos...@codesourcery.com