1  #include <stdlib.h>
       2  #include <string.h>
       3  
       4  typedef struct
       5  {
       6    char i1;
       7    short i2;
       8    long i4;
       9    long long i8;
      10    char str[2][10];
      11  } a_t;
      12  
      13  const __as a_t A =
      14    {
      15      12, 345, 678910, 1234567891011ll,
      16      {
      17        "xxx..xxx",
      18        "yyy..yyy"
      19      }
      20    };
      21  
      22  const __as volatile a_t V =
      23    {
      24      12+1, 345+1, 678910+1, 1234567891011ll+1,
      25      {
      26        "XXX..XXX",
      27        "YYY..YYY"
      28      }
      29    };
      30  
      31  a_t A2;
      32  volatile a_t V2;
      33  
      34  int main (void)
      35  {
      36    if (A.i1 != 12
      37        || A.i1 != V.i1 -1)
      38      abort();
      39  
      40    if (A.i2 != 345
      41        || A.i2 != V.i2 -1)
      42      abort();
      43  
      44    if (A.i4 != 678910
      45        || A.i4 != V.i4 -1)
      46      abort();
      47  
      48    if (A.i8 != 1234567891011ll
      49        || A.i8 != V.i8 -1)
      50      abort();
      51  
      52    A2 = A;
      53    V2 = V;
      54  
      55    if (A2.i1 != 12
      56        || A2.i1 != V2.i1 -1)
      57      abort();
      58  
      59    if (A2.i2 != 345
      60        || A2.i2 != V2.i2 -1)
      61      abort();
      62  
      63    if (A2.i4 != 678910
      64        || A2.i4 != V2.i4 -1)
      65      abort();
      66  
      67    if (A2.i8 != 1234567891011ll
      68        || A2.i8 != V2.i8 -1)
      69      abort();
      70  
      71    if (strcmp (A2.str[0], "xxx..xxx"))
      72      abort();
      73    if (strcmp (A2.str[1], "yyy..yyy"))
      74      abort();
      75  
      76    if (strcmp ((const char*) V2.str[0], "XXX..XXX"))
      77      abort();
      78    if (strcmp ((const char*) V2.str[1], "YYY..YYY"))
      79     abort();
      80    
      81    exit (0);
      82    return 0;
      83  }