研究実績の概要 |
本年度は, Cコンパイラのランダムテストとテストスイート開発に関して, 次の研究成果を挙げた. 1. テストプログラムの等価変換に基づいてCコンパイラのランダムテストを行う手法の強化を行った. 具体的には, 代入文の右辺の式中で, 同一変数を複数回参照することや, 代入が行われた変数を参照することを可能にした. 併せて, 処理アルゴリズムの見直しを行いプログラム生成の高速化を図った. これによってエラー検出能力を向上させることができた. 2. Cコンパイラの最適化機会逸失のテストを行う一手法として, 異なるコンパイラが生成するアセンブリコードの比較による方法を提案していたが, その比較法の改良を行った. 具体的には, アセンブリコードの不一致部分だけを抽出して比較するとともに, 各命令に実行時間に応じた重みを付けた比較を行う. これによって, 課題になっていた誤判定や見逃しを大幅に削減することができた. 3. コンパイラのランダムテストシステムOrange3をJavaの処理系のテストに拡張した. これによってJavaのコンパイラのみならず, JavaやAndroidの仮想機械のテストも行えるようになった. 本手法によりAndroidのdxコンパイラの不具合を検出した. なお, 本研究で開発したツールおよびテストスイートは次で公開している: Orange3 http://github.com/ishiura-compiler/Orange3, Orange4 http://github.com/ishiura-compiler/Orange4, CF3 http://github.com/ishiura-compiler/CF3/
|
備考 |
本研究で開発したテストシステムにより, 以下の不具合を検出し, 開発者に報告した. GCC (http://gcc.gnu.org/bugzilla/show_bug.cgi) bug 71521, 71563, 71608, 71631, 77980, 78305 LLVM (http://llvm.org/bugs/show_bug.cgi) bug 26407, 28504, 30375
|