1 /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
2 /* { dg-do compile } */
3 /* { dg-options "-O3" } */
4 
5 typedef __PTRDIFF_TYPE__ intptr_t;
6 typedef union lispunion *object;
7 struct character
8 {
9   long e;
10 };
11 extern struct symbol Cnil_body;
12 extern struct symbol Ct_body;
13 struct vector
14 {
15   object *v_self;
16 };
17 union lispunion
18 {
19   struct vector v;
20 };
21 void number_plus (object, object);
init_code()22 void init_code ()
23 {
24   object V659;
25   object _x, _y;
26   object V643;
27   intptr_t V648;
28   unsigned char V653;
29   object V651;
30   object V654;
31   object V658;
32 
33 T1240:
34 if (V648 >= (intptr_t)V651)
35     goto T1243;
36   V653 = ((char *) V654->v.v_self)[V648];
37   V659 = (object) V654 + V653;
38 T1261:
39   V658 =
40     (object)
41      V659 ? (object) & Ct_body : (object) & Cnil_body;
42   if (V658 == (object) & Cnil_body)
43     goto T1249;
44   goto T1224;
45 T1249:
46   V648 = (intptr_t) V648 + 1;
47   goto T1240;
48 T1243:
49   V643 = (object) & Cnil_body;
50 T1224:
51   _y = V643;
52   number_plus (_x, _y);
53 }
54