いまどきのCって、
unsigned long foo(double d)
{
union {
double d;
unsigned long i;
} u;

u.d = d;
return(u.i);
}
みたいなコードでも、dをメモリに置かずにレジスタ間コピーしてくれる
みたいですけど、いつ頃からこの様な最適化がされる様になったのでしょうか?