/* PR target/11044 */ /* Originator: Tim McGrath */ /* Testcase contributed by Eric Botcazou */ /* Testcase copied from gcc.target/i386/loop-3.c */ extern void *memset (void *, int, __SIZE_TYPE__); extern void abort (void); typedef struct { unsigned char colormod; } entity_state_t; typedef struct { int num_entities; entity_state_t *entities; } packet_entities_t; typedef struct { double senttime; float ping_time; packet_entities_t entities; } client_frame_t; typedef enum { cs_free, cs_server, cs_zombie, cs_connected, cs_spawned } sv_client_state_t; typedef struct client_s { sv_client_state_t state; int ping; client_frame_t frames[64]; } client_t; int CalcPing (client_t *cl) { float ping; int count, i; register client_frame_t *frame; if (cl->state == cs_server) return cl->ping; ping = 0; count = 0; for (frame = cl->frames, i = 0; i < 64; i++, frame++) { if (frame->ping_time > 0) { ping += frame->ping_time; count++; } } if (!count) return 9999; ping /= count; return ping * 1000; } int main(void) { client_t cl; memset(&cl, 0, sizeof(cl)); cl.frames[0].ping_time = 1.0f; if (CalcPing(&cl) != 1000) abort(); return 0; }