pr15296.c
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 74 行
C
74 行
/* PR optimization/15296. The delayed-branch scheduler caused code that SEGV:d for CRIS; a register was set to -1 in a delay-slot for the fall-through code, while that register held a pointer used in code at the branch target. */typedef int __attribute__ ((mode (__pointer__))) intptr_t;typedef intptr_t W;union u0{ union u0 *r; W i;};struct s1{ union u0 **m0; union u0 m1[4];};void f (void *, struct s1 *, const union u0 *, W, W, W) __attribute__ ((__noinline__));void g (void *, char *) __attribute__ ((__noinline__));voidf (void *a, struct s1 *b, const union u0 *h, W v0, W v1, W v4){ union u0 *e = 0; union u0 *k = 0; union u0 **v5 = b->m0; union u0 *c = b->m1; union u0 **d = &v5[0];l0:; if (v0 < v1) goto l0; if (v0 == 0) goto l3; v0 = v4; if (v0 != 0) goto l3; c[0].r = *d; v1 = -1; e = c[0].r; if (e != 0) g (a, ""); k = e + 3; k->i = v1; goto l4;l3:; c[0].i = v0; e = c[1].r; if (e != 0) g (a, ""); e = c[0].r; if (e == 0) g (a, ""); k = e + 2; k->r = c[1].r;l4:;}void g (void *a, char *b) { abort (); }intmain (){ union u0 uv[] = {{ .i = 111 }, { .i = 222 }, { .i = 333 }, { .i = 444 }}; struct s1 s = { 0, {{ .i = 555 }, { .i = 0 }, { .i = 999 }, { .i = 777 }}}; f (0, &s, 0, 20000, 10000, (W) uv); if (s.m1[0].i != (W) uv || s.m1[1].i != 0 || s.m1[2].i != 999 || s.m1[3].i != 777 || uv[0].i != 111 || uv[1].i != 222 || uv[2].i != 0 || uv[3].i != 444) abort (); exit (0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?