ステージングはだいたい完了した。 今日はメモリ周りの展開方法について考えていた。
LLVM-IRのgetelementptrのinboundsはバウンダリが一定の構造体なら処理しやすいんだが、これがバラバラの型宣言の構造体だとアドレス位置を算出するのが面倒だ。 すべてのメモリアクセスをgetelementptrでアクセスしてれば、まだ、マシなんだけど、メモリアクセスなんてmemcpy()とか使うこともあるよね。 そうすると、正確なメモリアドレスを準備しておかなければいけない。
LLVMでグローバル変数だけコンパイルしても変数は消えてしまうし、なんか良い方法でグローバル変数を消さないようにするのはないかな?
グローバル変数にしないで、普通の変数にして関数内に取り込んだら、最適化無しでLLVMしたら変数が残った。 これよさ気だなぁ〜。