|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
||||||||||||||||||||||||||||||||||||||||||||||
2010年03月03日(水) 旧暦 [n年日記] [更新:"2010/03/05 08:40:23"]#1 [gcc] gcc の PHI って何かな
gcc の内部を見る時に、一つの方法は -da を付けて処理をすることがある。
-d の後に a を付けると、全ての中間譜を保存してね、だけれど、
a でなくて、色々な一文字も指定出来る
*1
それで、その時に出来た、例えば、libgcc2.c.160r.shorten
のような名前の中を見ると
[orig:65 prephitmp.86 ]このようなものがあってこれは何かなと思う。それで少なくともこの文字列の中の PHI が重要な用語だ。で何かの略かなと思うが、どうもそうでもないらしい。 info の gccint の中の 10.5 Static Single Assignment の中に解説がある。 まず、この SSA が重要である。 プログラムを書いた人にとっては一つの名前の変数を、gcc の内部では、 その代入のたびに枝番を付けて区別するというのが、この SSA。 それで、変数を参照する時には、その枝番の中で一番新しいものを参照す る必要がある。 ところが、プログラムの進行によっては、どの枝番が最新かが決められない こともある。上記 info に書いてある例だけど、元は全て a という名前の 変数だったとして、gcc 内部では次のように書替える。
if (...)
a_1 = 5;
else if (...)
a_2 = 2;
else
a_3 = 13;
# a_4 = PHI <a_1, a_2, a_3>
return a_4;
ここで a を返したいが、_1, _2, _3 のどれにして良いか決まらない時に、
この PHI <a_1, a_2, a_3> のように書いて、
「a_1 a_2 a_3 のどれか一つだけれど、そのどれかは分らない」と
いう意味になる。
ついでなので、PHI 関連のマクロがあるので、挙げておく
@ PRE の方:
それで PREの方は
Partial Redundancy Elimination
の略だ。簡単に言うと、一部が同じなら省略しようね。
*1: gcc 4 からは一文字ばかりでなく、名前でも指定出来るようになっている
( Read More... (3) | つっこみ )
Comments related this article
|
最近の日記 2025年12月11日 ・oreore 2025/12 2025年11月22日 ・crash dump 2025年10月25日 ・recover from disk error 2025年10月23日 ・dd does not duplicate Windows 11 boot disk ? 2025年10月13日 ・missing package | ||