Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20071030-1.c
blob7be3cd8c8237615e3ed852f8849dd301862f21ff
1 /* PR target/11044 */
2 /* Originator: Tim McGrath <misty-@charter.net> */
3 /* Testcase contributed by Eric Botcazou <ebotcazou@libertysurf.fr> */
5 /* Testcase copied from gcc.target/i386/loop-3.c */
7 extern void *memset (void *, int, __SIZE_TYPE__);
8 extern void abort (void);
10 typedef struct
12 unsigned char colormod;
13 } entity_state_t;
15 typedef struct
17 int num_entities;
18 entity_state_t *entities;
19 } packet_entities_t;
21 typedef struct
23 double senttime;
24 float ping_time;
25 packet_entities_t entities;
26 } client_frame_t;
28 typedef enum
30 cs_free,
31 cs_server,
32 cs_zombie,
33 cs_connected,
34 cs_spawned
35 } sv_client_state_t;
37 typedef struct client_s
39 sv_client_state_t state;
40 int ping;
41 client_frame_t frames[64];
42 } client_t;
44 int CalcPing (client_t *cl)
46 float ping;
47 int count, i;
48 register client_frame_t *frame;
50 if (cl->state == cs_server)
51 return cl->ping;
52 ping = 0;
53 count = 0;
54 for (frame = cl->frames, i = 0; i < 64; i++, frame++) {
55 if (frame->ping_time > 0) {
56 ping += frame->ping_time;
57 count++;
60 if (!count)
61 return 9999;
62 ping /= count;
64 return ping * 1000;
67 int main(void)
69 client_t cl;
71 memset(&cl, 0, sizeof(cl));
73 cl.frames[0].ping_time = 1.0f;
75 if (CalcPing(&cl) != 1000)
76 abort();
78 return 0;