(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
ia64/
20020313-1.c
       1  /* PR 5312 
       2     The problem here is that the ia64 scheduler saw a sequence of L L M type
       3     insns, and messed up its internal state on which slot it was issuing
       4     to, and aborted.  */
       5  
       6  /* { dg-do compile } */
       7  /* In ILP32 mode, we get warnings about large integer constants.
       8     Those cause spurious FAILs.  */
       9  /* { dg-options "-w -O2 -mconstant-gp" } */
      10  
      11  typedef unsigned long __u64;
      12  typedef unsigned int __u32;
      13  typedef struct { } spinlock_t;
      14  struct cpuinfo_ia64 {
      15          union {
      16                  struct {
      17                          __u32 irq_count;
      18                          __u32 bh_count;
      19                  } f;
      20                  __u64 irq_and_bh_counts;
      21          } irq_stat;
      22          __u32 softirq_pending;
      23  } __attribute__ ((aligned ((1UL << 14)))) ;
      24  enum
      25  {
      26          TCA_UNSPEC,
      27          TCA_KIND,
      28          TCA_OPTIONS,
      29          TCA_STATS,
      30          TCA_XSTATS,
      31          TCA_RATE,
      32  };
      33  struct tc_stats
      34  {
      35          __u64 bytes;
      36          __u32 packets;
      37          __u32 drops;
      38          __u32 overlimits;
      39          __u32 bps;
      40          __u32 pps;
      41          __u32 qlen;
      42          __u32 backlog;
      43          spinlock_t *lock;
      44  };
      45  struct sk_buff {
      46          unsigned int data_len;
      47          unsigned char *tail;
      48          unsigned char *end;
      49  };
      50  static inline int skb_is_nonlinear(const struct sk_buff *skb)
      51  {
      52          return skb->data_len;
      53  }
      54  static inline int skb_tailroom(const struct sk_buff *skb)
      55  {
      56          return skb_is_nonlinear(skb) ? 0 : skb->end-skb->tail;
      57  }
      58  struct rtattr
      59  {
      60          unsigned short rta_len;
      61          unsigned short rta_type;
      62  };
      63  int qdisc_copy_stats(struct sk_buff *skb, struct tc_stats *st)
      64  {
      65          do { do { (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)++; __asm__ __volatile__("": : :"memory"); } while (0); (void)(st->lock); } while (0);
      66          ({ if (skb_tailroom(skb) < (int)( (((( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + ((char*)&st->lock - (char*)st)))+4 -1) & ~(4 -1) )) goto rtattr_failure; __rta_fill(skb, TCA_STATS, (char*)&st->lock - (char*)st, st); });
      67          do { do { } while(0); do { do { __asm__ __volatile__("": : :"memory"); (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)--; } while (0); if (__builtin_expect((((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->softirq_pending), 0) && (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count) == 0) do_softirq(); } while (0); } while (0);
      68          return 0;
      69  rtattr_failure:
      70          do { do { } while(0); do { do { __asm__ __volatile__("": : :"memory"); (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)--; } while (0); if (__builtin_expect((((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->softirq_pending), 0) && (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count) == 0) do_softirq(); } while (0); } while (0);
      71          return -1;
      72  }