> 我现在对test-suite的理解,是tester将代码编译后执行,然后比对输出结果以及统计编译/执行信息。 > 如果是这样的话,在平台开发工具(如汇编器、链接器)不完整的情况下,test-suite就不能正常使用。 > 此外,test-suite目前支持的功能中不包括对cross-developing tools进行测试。 > 以上的认识是否正确? Clang 底下的測試基本上是 c 或是 cpp 檔,測試檔開頭可能是, // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 這就代表運行測試的時候,會調用 clang 編譯這些測試檔。 LLVM 底下的測試基本上是 ll 檔,測試檔開頭可能是, ; RUN: opt < %s -basicaa -gvn -instcombine -S | grep DONOTREMOVE 這就代表運行測試的時候,會調用 opt 編譯 ll 檔。比對的部分,你必須在 測試檔裡面寫類似以下的註解: define i32 @test1(i32 inreg %a) nounwind { %b = add i32 %a, 128 ret i32 %b ; X32: subl $-128, %eax ; X64: subl $-128, } ; 後面接的部分就是你預期 LLVM 最後生成的指令應該是什麼,LLVM 測試的工具會幫你比對。這樣看來應該是不需要汇编器和链接器,比如說 你在 x86 上跑 mips 的測試,應該也不需要 mips 的工具鏈。我不確定 你說的 "不包括对cross-developing tools进行测试" 是什麼意思,我猜 你是說用 clang 做交叉編譯,在看其結果正確與否。這部分就我所知, 應該是不支持,我沒試過也沒看過有人這麼做。 > 在LLVM_SRC/test/CodeGen下有一系列以IR文件为起点、针对各种后端的测试,类似的测试在test-suite中好像没有。 > > 我们现在想要测试后端对于C90特性的支持程度,但不想深入LLVM IR的细节,因为支持C90的话只需要部分IR。 > 一个自然的做法是在一个测试例子中实现C --> IR --> .s,所以需要一个benchmark可以覆盖全部C90的特性。 > 我不太确定这种测试方法对于LLVM的后端是否妥当,你有什么建议吗? > 如果可行的话,有什么功能覆盖较完整的benchmark推荐? 對。你似乎問的是 test suite 而非 LLVM/Clang 源碼底下的 test 目錄。:) 那我再回答你前一個問題,是的,我目前只知道你必須用本地編好的 LLVM/Clang 去編譯這些 test suite,我沒看過有人嘗試用 clang 交叉編譯這些 test suite。test suite 基本上是用來評估新版 LLVM/Clang 編譯所得執行檔,其 效能是否比前一版差。 為什麼你是測試後端對 C90 的支持程度,不是應該要測試 clang 嗎? 你可以 解釋一下為什麼要測試后端? 韋任 P.S. 我看你在 LLVM ML 很活躍,最近看到很多中國人在上面發信。不錯。:) -- Wei-Ren Chen (陳韋任) Computer Systems Lab, Institute of Information Science, Academia Sinica, Taiwan (R.O.C.) Tel:886-2-2788-3799 #1667 Homepage: http://people.cs.nctu.edu.tw/~chenwj