re PR target/15302 ([3.3/3.4 only] gcc not consistent for passing structures with complex in them)

2004-05-20  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/15302
	* gcc.dg/compat/struct-complex-1.h: New file.
	* gcc.dg/compat/struct-complex-1_main.c: Likewise.
	* gcc.dg/compat/struct-complex-1_x.c: Likewise.
	* gcc.dg/compat/struct-complex-1_y.c: Likewise.

From-SVN: r82076
This commit is contained in:
H.J. Lu 2004-05-21 00:11:06 +00:00 committed by H.J. Lu
parent 0ef54a47cf
commit f69a11209a
5 changed files with 96 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2004-05-20 H.J. Lu <hongjiu.lu@intel.com>
PR target/15302
* gcc.dg/compat/struct-complex-1.h: New file.
* gcc.dg/compat/struct-complex-1_main.c: Likewise.
* gcc.dg/compat/struct-complex-1_x.c: Likewise.
* gcc.dg/compat/struct-complex-1_y.c: Likewise.
2004-05-20 Roger Sayle <roger@eyesopen.com>
PR middle-end/3074

View File

@ -0,0 +1,17 @@
#include <complex.h>
struct st
{
int s1;
float complex x;
int s2;
};
typedef struct { float r, i; } _complex;
struct stc
{
int s1;
_complex x;
int s2;
};

View File

@ -0,0 +1,21 @@
/* { dg-options "-O" } */
#ifdef __x86_64__
/* Test function argument passing. PR target/15302. */
extern void struct_complex_1_x (void);
extern void exit (int);
int
main ()
{
struct_complex_1_x ();
exit (0);
}
#else
int
main ()
{
return 0;
}
#endif

View File

@ -0,0 +1,29 @@
/* { dg-options "-O" } */
#ifdef __x86_64__
#include "struct-complex-1.h"
struct st st1;
struct stc st2;
extern void foo ();
extern void bar ();
int
struct_complex_1_x ()
{
st1.s1 = 1;
st1.s2 = 2;
__real__ st1.x = 2;
__imag__ st1.x = 4;
st2.s1 = 1;
st2.s2 = 2;
st2.x.r = 2;
st2.x.i = 4;
foo (st1);
foo (st2);
bar (st1);
bar (st2);
return 0;
}
#endif

View File

@ -0,0 +1,21 @@
/* { dg-options "-O" } */
#ifdef __x86_64__
#include <stdlib.h>
#include "struct-complex-1.h"
void
bar(struct st x)
{
if (x.s1 != 1 || x.s2 != 2
|| __real__ x.x != 2 || __imag__ x.x != 4)
abort ();
}
void
foo(struct stc x)
{
if (x.s1 != 1 || x.s2 != 2 || x.x.r != 2 || x.x.i != 4)
abort ();
}
#endif