毕昇编译器-Os 编译出错
收藏回复举报
毕昇编译器-Os 编译出错
t('forum.solved') 已解决
发表于2023-04-25 20:22:32
0 查看

对于如下代码,gcc 以及bisheng/clang -O0/1/2/3 都输出8, 但bisheng -Os 输出0.

int printf(const char *, ...);
int a[5][2];
short b;
int c, d;
int e(int f) {
  if (f >= 100)
    return 5;
  return 2;
}
int main() {
  for (;;) {
    c = 1;
    for (; e(5) + c - 2 >= 0; c--) {
      b = 0;
      for (; b <= 1; b++)
        a[c + 2][b] = 8;
    }
    break;
  }
  for (d=2; d < 3; d++)
    printf("%d\n", a[d][0]);
}

错误如下:

$ gcc-12 a.c && ./a.out
8
$ bisheng/clang -O0 a.c && ./a.out
8
$ bisheng/clang -O3 a.c && ./a.out
8
$ bisheng/clang -Os a.c && ./a.out
0
$

编译器版本如下:

$ bisheng/clang -v
HUAWEI BiSheng Compiler 2.5.0.1 clang version 12.0.0 (clang-4bed3943328c flang-396eaa360043)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/shaoli/compilers/ccbuilder-compilers
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
$

本帖最后由 匿名用户2023/11/16 15:51:50 编辑

我要发帖子