- 著者
-
滝本 宗宏
- 雑誌
- 情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
- 巻号頁・発行日
- vol.2, no.5, pp.15-27, 2009-11-20
コンパイラが行うコード最適化の1つである部分冗長除去は,冗長な式を除去するとともに,ループ不変式をループの外に移動する強力な手法である.部分冗長除去に基づいて行うプログラム変形は,いずれの実行経路上にも式を増加させないことを保証しており,その意味で,安全な最適化であるといわれる.一方,ループ内に存在する計算のように,頻繁に実行されることが予想される式は,たとえ実行経路上の式の数を増加させても,ループの外に移動させる投機的な移動を行う方が,プログラムの効率的な実行に貢献する場合がある.本研究では,ループ内の式についてだけ,投機的な移動によって,ループの外に移動させる部分冗長除去法を提案する.従来,部分冗長除去において,一部の実行経路上で冗長な部分冗長な式とループ不変式とを見分けることは困難であった.本手法では,質問伝播という要求駆動型の解析法を用いることによって,任意の制御フローグラフに対して,ループ不変式だけを投機的にループ外に移動させることができる.本手法の効果を示すために,本手法をCコンパイラに実装し,評価を行った.その結果,従来法と比べ,実行効率が17%以上向上する場合があることを確認した.