しばらく東京(-3/20)です。ちょうど桜が咲き始める頃までだな。
Ruby会議でもGCCいじっていたりしたんですが、LLVMと逆で、
-Oを付けると動かない
間接参照の部分のバグはすぐ取れたんですが、こっちが難い。-Oを付けるとGCCもLLVMも積極的に関数を展開にいくのですが、
どこかで、try_tail_call flag を落としてしまう
らしい。try_tail_call の他に must_tail_call というflagが追加されたんですが、Java で使われているみたい。それを on にすると、
Internal compile error
くそ〜 expand_call で無理に展開するだけでは CALL_P と SIBCALL_P が矛盾してしまうみたいだな。
関数展開は cfgexpand.c でやられているので,その辺をちゃんと読まないとだめなみたい。
というわけで、まだまだ、楽しめそうです。
No comments:
Post a Comment