1#include "compat-common.h" 2#include "struct-align-1.h" 3 4#define TEST(NAME) \ 5extern char v1_##NAME; \ 6extern double v2_##NAME; \ 7extern int v3_##NAME; \ 8 \ 9extern struct B1_##NAME b1_##NAME, ab1_##NAME[2]; \ 10extern struct B2_##NAME b2_##NAME, ab2_##NAME[2]; \ 11extern struct B3_##NAME b3_##NAME, ab3_##NAME[2]; \ 12 \ 13extern void pass1_##NAME (struct B1_##NAME); \ 14extern void pass2_##NAME (struct B2_##NAME); \ 15extern void pass3_##NAME (struct B3_##NAME); \ 16extern struct B1_##NAME return1_##NAME (void); \ 17extern struct B2_##NAME return2_##NAME (void); \ 18extern struct B3_##NAME return3_##NAME (void); \ 19 \ 20void \ 21checkp1_##NAME (struct B1_##NAME *p) \ 22{ \ 23 if (p->c != v1_##NAME) \ 24 DEBUG_CHECK; \ 25 if (p->d != v2_##NAME) \ 26 DEBUG_CHECK; \ 27} \ 28 \ 29void \ 30checkp2_##NAME (struct B2_##NAME *p) \ 31{ \ 32 if (p->c != v1_##NAME) \ 33 DEBUG_CHECK; \ 34 if (p->a2.d != v2_##NAME) \ 35 DEBUG_CHECK; \ 36} \ 37 \ 38void \ 39checkp3_##NAME (struct B3_##NAME *p) \ 40{ \ 41 if (p->c != v1_##NAME) \ 42 DEBUG_CHECK; \ 43 if (p->a3.d != v2_##NAME) \ 44 DEBUG_CHECK; \ 45 if (p->a3.i != v3_##NAME) \ 46 DEBUG_CHECK; \ 47} \ 48 \ 49void \ 50test_##NAME (void) \ 51{ \ 52 struct B1_##NAME s1; \ 53 struct B2_##NAME s2; \ 54 struct B3_##NAME s3; \ 55 DEBUG_FPUTS (DESC_##NAME); \ 56 DEBUG_NL; \ 57 DEBUG_FPUTS (" global variable"); \ 58 checkp1_##NAME (&b1_##NAME); \ 59 checkp2_##NAME (&b2_##NAME); \ 60 checkp3_##NAME (&b3_##NAME); \ 61 DEBUG_NL; \ 62 DEBUG_FPUTS (" global array"); \ 63 checkp1_##NAME (&ab1_##NAME[1]); \ 64 checkp2_##NAME (&ab2_##NAME[1]); \ 65 checkp3_##NAME (&ab3_##NAME[1]); \ 66 DEBUG_NL; \ 67 DEBUG_FPUTS (" argument"); \ 68 pass1_##NAME (b1_##NAME); \ 69 pass2_##NAME (b2_##NAME); \ 70 pass3_##NAME (b3_##NAME); \ 71 DEBUG_NL; \ 72 DEBUG_FPUTS (" function result"); \ 73 s1 = return1_##NAME (); \ 74 checkp1_##NAME (&s1); \ 75 s2 = return2_##NAME (); \ 76 checkp2_##NAME (&s2); \ 77 s3 = return3_##NAME (); \ 78 checkp3_##NAME (&s3); \ 79 DEBUG_NL; \ 80} 81 82TEST (orig) 83#ifndef SKIP_ATTRIBUTE 84TEST (p_all) 85TEST (p_inner) 86TEST (p_outer) 87TEST (a_max) 88TEST (m_outer_p_inner) 89TEST (m_inner_p_outer) 90#endif 91