On 09/08/2016 02:53 AM, Uros Bizjak wrote:
On Mon, Sep 5, 2016 at 1:45 PM, Joseph Myers <jos...@codesourcery.com> wrote:
On Sun, 4 Sep 2016, Uros Bizjak wrote:
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?
Well, ISO C doesn't define complex integers at all. But it's deliberate
(see DR#206) that _Complex float doesn't promote to _Complex double in
variable arguments. And there is nothing in ISO C to stop _Complex float
being passed in variable arguments.
For all these types including the complex integer ones: given that the
front end doesn't promote them, they should be usable in variable
arguments.
Attached patch adds various _Complex variable arguments tests to
scalar-by-value-4 and scalar-return-4 tests. These tests previously
erroneously claimed that these argument types are unsupported as
variable arguments.
2016-09-08 Uros Bizjak <ubiz...@gmail.com>
* gcc.dg/compat/scalar-by-value-4_x.c: Also test passing of
variable arguments.
* gcc.dg/compat/scalar-by-value-4_y.c (testva##NAME): New.
* gcc.dg/compat/scalar-by-value-4_main.c: Update description comment.
* gcc.dg/compat/scalar-return-4_x.c: Also test returning of
variable argument.
* gcc.dg/compat/scalar-return-4_y.c (testva##NAME): New.
* gcc.dg/compat/scalar-return-4_main.c: Update description comment.
Tested on x86_64-linux-gnu {,-m32}.
OK for mainline?
OK.
jeff