[Bug target/69846] New: empty struct value fails to pass properly
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Feb 16 20:51:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69846
Bug ID: 69846
Summary: empty struct value fails to pass properly
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
Target: x86-64
On Linux/x86-64:
[hjl@gnu-6 empty-4]$ cat x.cc
struct dummy0 { };
struct dummy1 { };
struct dummy : dummy0, dummy1 { };
extern void test (struct dummy a, int m, ...);
struct dummy a0;
int
main ()
{
test (a0, 0, 1, 2, 3, 4, 5, 6);
return 0;
}
[hjl@gnu-6 empty-4]$ cat check.cc
#include <stdarg.h>
struct dummy0 { };
struct dummy1 { };
struct dummy : dummy0, dummy1 { };
void
test (struct dummy a, int m, ...)
{
va_list va_arglist;
int i;
int count = 0;
if (m == 0)
count++;
va_start (va_arglist, m);
i = va_arg (va_arglist, int);
if (i == 1)
count++;
i = va_arg (va_arglist, int);
if (i == 2)
i = va_arg (va_arglist, int);
count++;
if (i == 3)
count++;
i = va_arg (va_arglist, int);
if (i == 4)
count++;
i = va_arg (va_arglist, int);
if (i == 5)
count++;
i = va_arg (va_arglist, int);
if (i == 6)
count++;
va_end (va_arglist);
if (count != 7)
__builtin_abort ();
}
[hjl@gnu-6 empty-4]$ g++ -O check.cc x.cc -m32
[hjl@gnu-6 empty-4]$ ./a.out
[hjl@gnu-6 empty-4]$ g++ -O check.cc x.cc
[hjl@gnu-6 empty-4]$ ./a.out
Aborted
[hjl@gnu-6 empty-4]$
More information about the Gcc-bugs
mailing list