1struct tmp 2{ 3 long long int pad : 12; 4 long long int field : 52; 5}; 6 7struct tmp2 8{ 9 long long int field : 52; 10 long long int pad : 12; 11}; 12 13struct tmp3 14{ 15 long long int pad : 11; 16 long long int field : 53; 17}; 18 19struct tmp4 20{ 21 long long int field : 53; 22 long long int pad : 11; 23}; 24 25struct tmp 26sub (struct tmp tmp) 27{ 28 tmp.field ^= 0x0008765412345678LL; 29 return tmp; 30} 31 32struct tmp2 33sub2 (struct tmp2 tmp2) 34{ 35 tmp2.field ^= 0x0008765412345678LL; 36 return tmp2; 37} 38 39struct tmp3 40sub3 (struct tmp3 tmp3) 41{ 42 tmp3.field ^= 0x0018765412345678LL; 43 return tmp3; 44} 45 46struct tmp4 47sub4 (struct tmp4 tmp4) 48{ 49 tmp4.field ^= 0x0018765412345678LL; 50 return tmp4; 51} 52 53struct tmp tmp = {0x123, 0x123456789ABCDLL}; 54struct tmp2 tmp2 = {0x123456789ABCDLL, 0x123}; 55struct tmp3 tmp3 = {0x123, 0x1FFFF00000000LL}; 56struct tmp4 tmp4 = {0x1FFFF00000000LL, 0x123}; 57 58main() 59{ 60 61 if (sizeof (long long) != 8) 62 exit (0); 63 64 tmp = sub (tmp); 65 tmp2 = sub2 (tmp2); 66 67 if (tmp.pad != 0x123 || tmp.field != 0xFFF9551175BDFDB5LL) 68 abort (); 69 if (tmp2.pad != 0x123 || tmp2.field != 0xFFF9551175BDFDB5LL) 70 abort (); 71 72 tmp3 = sub3 (tmp3); 73 tmp4 = sub4 (tmp4); 74 if (tmp3.pad != 0x123 || tmp3.field != 0xFFF989AB12345678LL) 75 abort (); 76 if (tmp4.pad != 0x123 || tmp4.field != 0xFFF989AB12345678LL) 77 abort (); 78 exit (0); 79} 80