07/12/12 00:58:24 gK8BpV36
>>308 の件ですが
すいません自分の勘違いです
>>308 のアセンブリはたまたま正しかったのですが
このアセンブリの元となった C 言語コードが main 関数にインライン展開されていて
その main 関数のアセンブリ表示では命令の順番が狂っていました
コンパイル時に
warning: dereferencing type-punned pointer will break strict-aliasing rules
って警告が出ていて strict-aliasing rules が破られているのに
-O2 オプションによって strict-aliasing rules を守っていることに基づいた最適化をされて
命令の順番が狂っていたみたいです
-fno-strict-aliasing オプションを付けると命令の順番は狂いませんでした