Monthly Archives: January 2025

GCC 利用未定义行为进行优化正确么?

说实话,编译器是否该利用 Undefined Behavior 进行优化目前都还是一个争议话题,主要是 gcc 开了个坏头,不予余力的在默认参数下利用 UB 来优化,举个例子,C 语言里带符号整数溢出是未定义行为,编译器应该假设它实际上以某种方式定义了: int foo(unsigned char c) { int value = 2147483600; value += c; if (value < 2147483600) bar(); return value; } 但利用这个 UB 进行优化的编译器会认为,既然 x 不会是负数,那么 value < 2147483600 就永远不会发生,所以整个 if 语句以及后面的 … Continue reading

Loading

Posted in 编程技术 | Tagged | Leave a comment