1  /* { dg-options "-O3" } */
       2  /* { dg-do run } */
       3  
       4  extern void abort (void);
       5  
       6  void func (void)
       7  {
       8    int i;
       9    int nops;
      10    char *codestr =
      11      "|\000\000Ee\000\000Z\001\000d\000\000Z\002\000d\025\000Z\003\000"
      12      "\t\t\t\t\t\t\t\t\t\t\t\td\026\000Z\004\000d\005\000\204\000\000Z"
      13      "\005\000e\006\000e\a\000j\005\000e\b\000d\006\000\204\002\000\203"
      14      "\001\000Z\t\000d\a\000\204\000\000Z\n\000d\b\000\204\000\000Z\v\000d"
      15      "\t\000\204\000\000Z\f\000d\n\000\204\000\000Z\r\000e\016\000e\017\000d"
      16      "\v\000\203\001\000d\f\000d\r\000\203\001\001Z\020\000e\016\000e\017"
      17      "\000d\016\000\203\001\000d\f\000d\017\000\203\001\001Z\021\000e\016"
      18      "\000e\017\000d\020\000\203\001\000d\f\000d\021\000\203\001\001Z\022"
      19      "\000e\016\000e\017\000d\022\000\203\001\000d\f\000d\023\000\203\001"
      20      "\001Z\023\000d\024\000S";
      21    int codelen = 209;
      22    int addrmap[500];
      23  
      24    for (i=0, nops=0 ; i<codelen ; i += ((codestr[i] >= 90) ? 3 : 1))
      25      {
      26        addrmap[i] = i - nops;
      27        if (codestr[i] == 9)
      28  	nops++;
      29      }
      30  
      31    if (addrmap[0] != 0
      32        || addrmap[3] != 3
      33        || addrmap[4] != 4
      34        || addrmap[7] != 7
      35        || addrmap[10] != 10
      36        || addrmap[13] != 13
      37        || addrmap[16] != 16
      38        || addrmap[19] != 19
      39        || addrmap[22] != 22
      40        || addrmap[23] != 22
      41        || addrmap[24] != 22)
      42      abort ();
      43  }
      44  
      45  int main ()
      46  {
      47    func ();
      48    return 0;
      49  }