Monday, 12 March 2018

GCC側

しばらく東京(-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: