社区讨论

编译器优化 Bug 滞销,帮帮我们!

学术版参与者 9已保存回复 25

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
25 条
当前快照
1 份
快照标识符
@mikch6t0
此快照首次捕获于
2025/11/29 21:46
3 个月前
此快照最后确认于
2025/12/01 16:56
3 个月前
查看原帖
求问 G++9.3.0 的 Bug,表现如下:
省流:
CPP
#include<bits/stdc++.h>
using namespace std;
long long n;
bool v[4];
int main(){
  cin>>n;
  for(int i=1;i<=n;++i)
    v[i]=((n-i)%2==1);
  cout<<v[n]<<endl;
}
直接使用 NOI Linux2.0 中附带的 g++9.3.0 进行编译。
如果编译选项为 -std=c++14,输入为 33,那么输出 00,这是正确的。
如果编译选项为 std=c++14 -O2 -static,输入为 33,那么输出变为 11,这是错误的。
这份代码显然没有数组越界,也没有什么 UB,求问这到底是什么已知的 Bug 吗?
PS,在非常新的 G++ 版本中,这个 Bug 似乎消失了,也可能是我记错了。
感谢 haozexu最先发现这个 Bug。本人研究无果在此发帖询问。

回复

25 条回复,欢迎继续交流。

正在加载回复...