1  /* { dg-do compile } */
       2  
       3  typedef unsigned short __u16;
       4  #if __SIZEOF_INT__ < 4
       5    __extension__ typedef __UINT32_TYPE__ __u32;
       6    __extension__ typedef __UINT32_TYPE__ u32;
       7  #else
       8    typedef unsigned int __u32;
       9    typedef unsigned int u32;
      10  #endif
      11  typedef unsigned char u8;
      12  typedef __u16 __le16;
      13  typedef __u32 __le32;
      14  typedef u32 secno;
      15  struct bplus_internal_node {
      16      __le32 file_secno;
      17      __le32 down;
      18  };
      19  struct bplus_header {
      20      u8 n_used_nodes;
      21      __le16 first_free;
      22      union {
      23  	struct bplus_internal_node internal[0];
      24      }
      25      u;
      26  };
      27  
      28  __u16 __fswab16(__u16 val);
      29  __u32 __fswab32(__u32 val);
      30  void hpfs_ea_remove (__u32);
      31  
      32  void hpfs_truncate_btree(secno f, int fno, unsigned secs, struct bplus_header *btree)
      33  {
      34    int i, j;
      35    for (i = 0; i < btree->n_used_nodes; i++)
      36      if ((__builtin_constant_p((__u32)(( __u32)(__le32)(btree->u.internal[i].file_secno))) ? ((__u32)( (((__u32)(( __u32)(__le32)(btree->u.internal[i].file_secno)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__le32)(btree->u.internal[i].file_secno)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__le32)(btree->u.internal[i].file_secno)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__le32)(btree->u.internal[i].file_secno)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__le32)(btree->u.internal[i].file_secno))) >= secs) goto f;
      37    return;
      38  f:
      39    for (j = i + 1; j < btree->n_used_nodes; j++)
      40      hpfs_ea_remove((__builtin_constant_p((__u32)(( __u32)(__le32)(btree->u.internal[j].down))) ? ((__u32)( (((__u32)(( __u32)(__le32)(btree->u.internal[j].down)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__le32)(btree->u.internal[j].down)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__le32)(btree->u.internal[j].down)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__le32)(btree->u.internal[j].down)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__le32)(btree->u.internal[j].down))));
      41    btree->n_used_nodes = i + 1;
      42    btree->first_free = (( __le16)(__builtin_constant_p((__u16)((8 + 8 * btree->n_used_nodes))) ? ((__u16)( (((__u16)((8 + 8 * btree->n_used_nodes)) & (__u16)0x00ffU) << 8) | (((__u16)((8 + 8 * btree->n_used_nodes)) & (__u16)0xff00U) >> 8))) : __fswab16((8 + 8 * btree->n_used_nodes))));
      43  }