华为计算微信公众号
华为计算微博
华为计算今日头条
对于如下的代码,运行Bisheng -O2/3编译出的二进制出现Segmentation fault. 该代码是合法C代码,gcc、clang、以及bisheng -O0/1 都可以正常编译.
static int *a[4][5]; char b; long c; long d[4]; short e; int main() { int **f = &a[0][0]; *f = a[3][2]; c = 0; for (; c <= 1; c++) { b = 1; for (; b >= 0; b--) { e = 0; for (; e <= 2; e++) a[e][c + 1] = 0; d[e] = 0; } } }
编译结果:
$ gcc -O2 a.c && ./a.out $ $ bisheng/clang -O0 a.c && ./a.out $ $ bisheng/clang -O2 a.c && ./a.out Segmentation fault $ bisheng/clang -O3 a.c && ./a.out Segmentation fault
本帖最后由 匿名用户 于 2023/11/16 15:52:04 编辑
对于如下的代码,运行Bisheng -O2/3编译出的二进制出现Segmentation fault. 该代码是合法C代码,gcc、clang、以及bisheng -O0/1 都可以正常编译.
static int *a[4][5]; char b; long c; long d[4]; short e; int main() { int **f = &a[0][0]; *f = a[3][2]; c = 0; for (; c <= 1; c++) { b = 1; for (; b >= 0; b--) { e = 0; for (; e <= 2; e++) a[e][c + 1] = 0; d[e] = 0; } } }编译结果: