pr10392-1.c
来自「用于进行gcc测试」· C语言 代码 · 共 64 行
C
64 行
/* PR optimization/10392 * Reporter: marcus@mc.pp.se * Summary: [3.3/3.4 regression] [SH] optimizer generates faulty array indexing * Description: * The address calculation of an index operation on an array on the stack * can _under some conditions_ get messed up completely * * Testcase tweaked by dank@kegel.com * Problem only happens with -O2 -m4, so it should only happen on sh4, * but what the heck, let's test other architectures, too. * Not marked as xfail since it's a regression.*//* { dg-do run } *//* { dg-options "-O2" } *//* { dg-options "-O2 -m4" { target sh4-*-* } } */extern void abort (void);const char *dont_optimize_function_away;const char *use(const char *str){ dont_optimize_function_away = str; if (str[0] != 'v') abort(); if (str[1] < '1' || str[1] > '6') abort(); if (str[2]) abort(); return str[2] ? "notused" : "v6";}const char *func(char *a, char *b){ char buf[128]; unsigned char i; const char *result; char *item[] = { "v1", "v2", }; buf[0] = 'v'; buf[1] = '3'; buf[2] = 0; for (i = 0; i < 2; i++) { /* bug is: following line passes wild pointer to use() on sh4 -O2 */ result = use(item[i]); use(buf); use(a); use(b); result = use(result); } return result;}int main(){ func("v4", "v5"); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?