📄 20031201-1.c
字号:
/* Copyright (C) 2003 Free Software Foundation. PR target/13256 STRICT_LOW_PART was handled incorrectly in delay slots. Origin: Hans-Peter Nilsson. */typedef struct { unsigned int e0 : 16; unsigned int e1 : 16; } s1;typedef struct { unsigned int e0 : 16; unsigned int e1 : 16; } s2;typedef struct { s1 i12; s2 i16; } io;static int test_length = 2;static io *i;static int m = 1;static int d = 1;static unsigned long test_t0;static unsigned long test_t1;void test(void) __attribute__ ((__noinline__));extern int f1 (void *port) __attribute__ ((__noinline__));extern void f0 (void) __attribute__ ((__noinline__));intf1 (void *port){ int fail_count = 0; unsigned long tlen; s1 x0 = {0}; s2 x1 = {0}; i = port; x0.e0 = x1.e0 = 32; i->i12 = x0; i->i16 = x1; do f0(); while (test_t1); x0.e0 = x1.e0 = 8; i->i12 = x0; i->i16 = x1; test (); if (m) { unsigned long e = 1000000000 / 460800 * test_length; tlen = test_t1 - test_t0; if (((tlen-e) & 0x7FFFFFFF) > 1000) f0(); } if (d) { unsigned long e = 1000000000 / 460800 * test_length; tlen = test_t1 - test_t0; if (((tlen - e) & 0x7FFFFFFF) > 1000) f0(); } return fail_count != 0 ? 1 : 0;}intmain (){ io io0; f1 (&io0); abort ();}voidtest (void){ io *iop = i; if (iop->i12.e0 != 8 || iop->i16.e0 != 8) abort (); exit (0);}voidf0 (void){ static int washere = 0; io *iop = i; if (washere++ || iop->i12.e0 != 32 || iop->i16.e0 != 32) abort ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -