一段神奇的代码
19 Nov 2007在linux上执行如下代码(gcc < 4.1.2)。
#include <stdio.h>
#include <stdlib.h>
void main (void) {
int i=2;
if( -10*abs (i-1) == 10*abs(i-1) )
printf ("OMG,-10==10 in linux!\n");
else
printf ("nothing special here\n");
}
因为 gcc 在优化 abs() 的时候,认为 Aabs(B) == abs(AB) 造成的。
这个 bug 对应的 patch 在 这里。