4

LLVM コンパイラの新しいバックエンドに取り組んでいます。バックエンドは順調に進んでいますが、コードジェネレーターが正しく動作しているかどうかを確認したいところまで来ています。非常に正確で、検証に使用したいプロセッサー・シミュレーターを入手しました。

LLVM-lit を使用することは、テスト プロセスにシミュレーターを統合する方法がないため、私にとっては良い選択肢ではないようです。

現在、私のテスト戦略には、できるだけ多くのステートメントをチェックしようとするテスト プログラムの作成が含まれます。以下は、算術チェックの例です。

c = a + a;          
if (c != 6) return 4;
c = a + a + a;      
if (c != 9) return 5;
// etc

できるだけ多くのコーナーケースを見つけるのが難しいことはすでに気づいています。

これは codegenerator を検証するスマートな方法ですか? もしそうなら、この種のテストを含む既存のプロジェクトを知っている人はいますか?

4

2 に答える 2

1

最初にネイティブ プラットフォーム コンパイラ (例: ) でコンパイルされ、次にLLVMgccでコンパイルされ、結果が比較される「プログラム全体」のセットです。

そのため、CPU にコードを生成できるコンパイラが既にある場合は、これが適切なオプションです。そうでない場合は、期待される出力が開発マシンで生成され、バックエンドでコンパイルされたコードによって生成された出力と比較されるようにリグできます。

于 2013-10-27T21:05:15.933 に答える