1  /* { dg-do compile } */
       2  /* { dg-options "-std=gnu99" } */
       3  
       4  typedef _Fract qq  __attribute__ ((mode (QQ)));
       5  typedef _Fract hq  __attribute__ ((mode (HQ)));
       6  typedef _Fract sq  __attribute__ ((mode (SQ)));
       7  typedef _Fract dq  __attribute__ ((mode (DQ)));
       8  typedef unsigned _Fract uqq  __attribute__ ((mode (UQQ)));
       9  typedef unsigned _Fract uhq  __attribute__ ((mode (UHQ)));
      10  typedef unsigned _Fract usq  __attribute__ ((mode (USQ)));
      11  typedef unsigned _Fract udq  __attribute__ ((mode (UDQ)));
      12  typedef _Sat _Fract Sqq  __attribute__ ((mode (QQ)));
      13  typedef _Sat _Fract Shq  __attribute__ ((mode (HQ)));
      14  typedef _Sat _Fract Ssq  __attribute__ ((mode (SQ)));
      15  typedef _Sat _Fract Sdq  __attribute__ ((mode (DQ)));
      16  typedef _Sat unsigned _Fract Suqq  __attribute__ ((mode (UQQ)));
      17  typedef _Sat unsigned _Fract Suhq  __attribute__ ((mode (UHQ)));
      18  typedef _Sat unsigned _Fract Susq  __attribute__ ((mode (USQ)));
      19  typedef _Sat unsigned _Fract Sudq  __attribute__ ((mode (UDQ)));
      20  typedef _Accum ha  __attribute__ ((mode (HA)));
      21  typedef _Accum sa  __attribute__ ((mode (SA)));
      22  typedef _Accum da  __attribute__ ((mode (DA)));
      23  typedef unsigned _Accum uha  __attribute__ ((mode (UHA)));
      24  typedef unsigned _Accum usa  __attribute__ ((mode (USA)));
      25  typedef unsigned _Accum uda  __attribute__ ((mode (UDA)));
      26  typedef _Sat _Accum Sha  __attribute__ ((mode (HA)));
      27  typedef _Sat _Accum Ssa  __attribute__ ((mode (SA)));
      28  typedef _Sat _Accum Sda  __attribute__ ((mode (DA)));
      29  typedef _Sat unsigned _Accum Suha  __attribute__ ((mode (UHA)));
      30  typedef _Sat unsigned _Accum Susa  __attribute__ ((mode (USA)));
      31  typedef _Sat unsigned _Accum Suda  __attribute__ ((mode (UDA)));
      32  
      33  /* Not all platforms support TQ, UTQ, TA, UTA modes.  */
      34  #if defined(__LP64__) && !defined(__hppa__)
      35  typedef _Fract tq  __attribute__ ((mode (TQ)));
      36  typedef unsigned _Fract utq  __attribute__ ((mode (UTQ)));
      37  typedef _Sat _Fract Stq  __attribute__ ((mode (TQ)));
      38  typedef _Sat unsigned _Fract Sutq  __attribute__ ((mode (UTQ)));
      39  typedef _Accum ta  __attribute__ ((mode (TA)));
      40  typedef unsigned _Accum uta  __attribute__ ((mode (UTA)));
      41  typedef _Sat _Accum Sta  __attribute__ ((mode (TA)));
      42  typedef _Sat unsigned _Accum Suta  __attribute__ ((mode (UTA)));
      43  
      44  int tqsize[sizeof (tq) == 16 ? 1 : -1];
      45  int utqsize[sizeof (utq) == 16 ? 1 : -1];
      46  int Stqsize[sizeof (Stq) == 16 ? 1 : -1];
      47  int Sutqsize[sizeof (Sutq) == 16 ? 1 : -1];
      48  int tasize[sizeof (ta) == 16 ? 1 : -1];
      49  int utasize[sizeof (uta) == 16 ? 1 : -1];
      50  int Stasize[sizeof (Sta) == 16 ? 1 : -1];
      51  int Sutasize[sizeof (Suta) == 16 ? 1 : -1];
      52  
      53  int tqalign = __alignof (tq);
      54  int utqalign = __alignof (utq);
      55  int Stqalign = __alignof (Stq);
      56  int Sutqalign = __alignof (Sutq);
      57  int taalign = __alignof (ta);
      58  int utaalign = __alignof (uta);
      59  int Staalign = __alignof (Sta);
      60  int Sutaalign = __alignof (Suta);
      61  #endif
      62  
      63  int qqsize[sizeof (qq) == 1 ? 1 : -1];
      64  int hqsize[sizeof (hq) == 2 ? 1 : -1];
      65  int sqsize[sizeof (sq) == 4 ? 1 : -1];
      66  int dqsize[sizeof (dq) == 8 ? 1 : -1];
      67  int uqqsize[sizeof (qq) == 1 ? 1 : -1];
      68  int uhqsize[sizeof (hq) == 2 ? 1 : -1];
      69  int usqsize[sizeof (sq) == 4 ? 1 : -1];
      70  int udqsize[sizeof (dq) == 8 ? 1 : -1];
      71  int Sqqsize[sizeof (Sqq) == 1 ? 1 : -1];
      72  int Shqsize[sizeof (Shq) == 2 ? 1 : -1];
      73  int Ssqsize[sizeof (Ssq) == 4 ? 1 : -1];
      74  int Sdqsize[sizeof (Sdq) == 8 ? 1 : -1];
      75  int Suqqsize[sizeof (Sqq) == 1 ? 1 : -1];
      76  int Suhqsize[sizeof (Shq) == 2 ? 1 : -1];
      77  int Susqsize[sizeof (Ssq) == 4 ? 1 : -1];
      78  int Sudqsize[sizeof (Sdq) == 8 ? 1 : -1];
      79  int hasize[sizeof (ha) == 2 ? 1 : -1];
      80  int sasize[sizeof (sa) == 4 ? 1 : -1];
      81  int dasize[sizeof (da) == 8 ? 1 : -1];
      82  int uhasize[sizeof (uha) == 2 ? 1 : -1];
      83  int usasize[sizeof (usa) == 4 ? 1 : -1];
      84  int udasize[sizeof (uda) == 8 ? 1 : -1];
      85  int Shasize[sizeof (Sha) == 2 ? 1 : -1];
      86  int Ssasize[sizeof (Ssa) == 4 ? 1 : -1];
      87  int Sdasize[sizeof (Sda) == 8 ? 1 : -1];
      88  int Suhasize[sizeof (Suha) == 2 ? 1 : -1];
      89  int Susasize[sizeof (Susa) == 4 ? 1 : -1];
      90  int Sudasize[sizeof (Suda) == 8 ? 1 : -1];
      91  
      92  int qqalign = __alignof (qq);
      93  int hqalign = __alignof (hq);
      94  int sqalign = __alignof (sq);
      95  int dqalign = __alignof (dq);
      96  int uqqalign = __alignof (uqq);
      97  int uhqalign = __alignof (uhq);
      98  int usqalign = __alignof (usq);
      99  int udqalign = __alignof (udq);
     100  int Sqqalign = __alignof (Sqq);
     101  int Shqalign = __alignof (Shq);
     102  int Ssqalign = __alignof (Ssq);
     103  int Sdqalign = __alignof (Sdq);
     104  int Suqqalign = __alignof (Suqq);
     105  int Suhqalign = __alignof (Suhq);
     106  int Susqalign = __alignof (Susq);
     107  int Sudqalign = __alignof (Sudq);
     108  int haalign = __alignof (ha);
     109  int saalign = __alignof (sa);
     110  int daalign = __alignof (da);
     111  int uhaalign = __alignof (uha);
     112  int usaalign = __alignof (usa);
     113  int udaalign = __alignof (uda);
     114  int Shaalign = __alignof (Sha);
     115  int Ssaalign = __alignof (Ssa);
     116  int Sdaalign = __alignof (Sda);
     117  int Suhaalign = __alignof (Suha);
     118  int Susaalign = __alignof (Susa);
     119  int Sudaalign = __alignof (Suda);