Dark Side cat /dev/brain

一段神奇的代码

在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 在 这里

comments powered by Disqus