|
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
|
最近の日記 2024年10月25日 ・Die Frau ohne Schatten 影のない女 2024年07月03日 ・kicad oddity 2024年05月08日 ・comparison on ./buildsh tools 2024年05月06日 ・py-setuptools (python 3.11.9) ・make release took 1 hours and 10 min ・qemu invocation for 10.99.10 2024年05月05日 ・Windows 10 version ・serial connection ・bc bench | ||