毕昇编译器Bug: Bisheng-2.5.0.1 在特定代码上编译出错
t('forum.solved') 已解决
发表于2023-04-24 21:04:55

对于如下的代码,运行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 编辑

新人帖
发表于2023/04/24