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:
parent
0ef54a47cf
commit
f69a11209a
5 changed files with 96 additions and 0 deletions
|
@ -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
|
||||
|
|
17
gcc/testsuite/gcc.dg/compat/struct-complex-1.h
Normal file
17
gcc/testsuite/gcc.dg/compat/struct-complex-1.h
Normal 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;
|
||||
};
|
21
gcc/testsuite/gcc.dg/compat/struct-complex-1_main.c
Normal file
21
gcc/testsuite/gcc.dg/compat/struct-complex-1_main.c
Normal 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
|
29
gcc/testsuite/gcc.dg/compat/struct-complex-1_x.c
Normal file
29
gcc/testsuite/gcc.dg/compat/struct-complex-1_x.c
Normal 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
|
21
gcc/testsuite/gcc.dg/compat/struct-complex-1_y.c
Normal file
21
gcc/testsuite/gcc.dg/compat/struct-complex-1_y.c
Normal 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
|
Loading…
Add table
Reference in a new issue