[hellogcc] Re: [hellogcc] [投稿] LLVM 3.1 �y��������

  • From: 陳韋任 (Wei-Ren Chen) <chenwj@xxxxxxxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Wed, 22 Aug 2012 18:26:36 +0800

> 我现在对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

Other related posts:

  • » [hellogcc] Re: [hellogcc] [投稿] LLVM 3.1 �y�������� - 陳韋任 (Wei-Ren Chen)