This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Testing _Complex varargs passing [was: Alpha, ABI change: pass SFmode and SCmode varargs by reference]


On Fri, Sep 2, 2016 at 2:11 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Sep 02, 2016 at 12:09:30PM +0000, Joseph Myers wrote:
>> On Fri, 2 Sep 2016, Uros Bizjak wrote:
>>
>> >      argument.  Passing _Complex float as a variable argument never
>> >      worked on alpha.  Thus, we have no backward compatibility issues
>>
>> Presumably there should be an architecture-independent execution test of
>> passing _Complex float in variable arguments - either new, or a
>> pre-existing one whose XFAIL or skip for alpha can be removed.  (That is,
>> one in the GCC testsuite rather than relying on a libffi test to test
>> GCC.)
>
> And if it is in g*.dg/compat/, it can even test ABI compatibility between
> different compilers or their versions.

What bothers me is the comment in
testsuite/gcc.dg/compat/scalar-by-value-4_main.c which explicitly
mentions that this test tests _Complex numbers that cannot be used in
vararg lists:

<q>
/* Test passing scalars by value.  This test includes _Complex types
   whose real and imaginary parts cannot be used in variable-length
   argument lists.  */
</q>

It looks that different handling of _Complex char, _Complex short and
_Complex float is there on purpose. Is (was?) there a limitation in a
c language standard that prevents passing of these arguments as
varargs?

Please note that there are no additional FAILs with mainline gcc on
x86_64-linux-gnu {,-m32} test run.

Uros.

Attachment: t.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]