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

  • From: Triple Yang <triple.yang@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Wed, 22 Aug 2012 21:26:07 +0800

在 2012年8月22日 下午6:26,???f任 (Wei-Ren Chen) <chenwj@xxxxxxxxxxxxxx> 写道:
>> 我现在对test-suite的理解,是tester将代码编译后执行,然后比对输出结果以及统计编译/执行信息。
>> 如果是这样的话,在平台开发工具(如汇编器、链接器)不完整的情况下,test-suite就不能正常使用。
>> 此外,test-suite目前支持的功能中不包括对cross-developing tools进行测试。
>> 以上的认识是否正确?
>
>   Clang 底下的?y??基本上是 c 或是 cpp ?n,?y???n?_?^可能是,
>
>   // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
>
>   ?@就代表?\行?y??的?r候,???{用 clang ???g?@些?y???n。
>
>   LLVM 底下的?y??基本上是 ll ?n,?y???n?_?^可能是,
>
>   ; RUN: opt < %s -basicaa -gvn -instcombine -S | grep DONOTREMOVE
>
>   ?@就代表?\行?y??的?r候,???{用 opt ???g ll ?n。比?Φ牟糠郑?你必??在
> ?y???n?e面????似以下的?]解:
>
> define i32 @test1(i32 inreg %a) nounwind {
>   %b = add i32 %a, 128
>   ret i32 %b
> ; X32: subl     $-128, %eax
> ; X64: subl $-128,
> }
>
>   ; 後面接的部分就是你?A期 LLVM 最後生成的指令????是什?N,LLVM
> ?y??的工具???湍惚??Α_@?涌???????是不需要汇编器和链接器,比如?f
> 你在 x86 上跑 mips 的?y??,????也不需要 mips 的工具??。我不?_定
> 你?f的 "不包括对cross-developing tools进行测试" 是什?N意思,我猜
> 你是?f用 clang 做交叉???g,在看其?Y果正?_?c否。?@部分就我所知,
> ????是不支持,我?]???^也?]看?^有人?@?N做。

我指的确是“交叉编译”。看起来test-suite应该是还不支持。

>
>> 在LLVM_SRC/test/CodeGen下有一系列以IR文件为起点、针对各种后端的测试,类似的测试在test-suite中好像没有。
>>
>> 我们现在想要测试后端对于C90特性的支持程度,但不想深入LLVM IR的细节,因为支持C90的话只需要部分IR。
>> 一个自然的做法是在一个测试例子中实现C --> IR --> .s,所以需要一个benchmark可以覆盖全部C90的特性。
>> 我不太确定这种测试方法对于LLVM的后端是否妥当,你有什么建议吗?
>> 如果可行的话,有什么功能覆盖较完整的benchmark推荐?
>
>   ?ΑD闼坪???的是 test suite 而非 LLVM/Clang 源?a底下的 test 目??。:)
> 那我再回答你前一?????},是的,我目前只知道你必??用本地??好的 LLVM/Clang
> 去???g?@些 test suite,我?]看?^有人?L??用 clang 交叉???g?@些 test
> suite。test suite 基本上是用?碓u估新版 LLVM/Clang ???g所得?绦??n,其
> 效能是否比前一版差。
>
>   ?槭颤N你是?y??後端?? C90 的支持程度,不是????要?y?? clang ??? 你可以
> 解??一下?槭颤N要?y??后端?

由于llvm IR在整个工程中的核心角色,clang前端对C family languages的支持程度的测试
是通过将C程序编译成IR实现的;而对后端的测试是通过将IR编程成目标汇编语言实现的。
所以目前测试后端的自然做法是以IR为出发点,在源码的test/CodeGen/中使用的是这条思路。

我们现在想测试一个C90编译器后端的完善程度,有两点原因使我觉得应该以C程序为出发点:
1. clang编译C90程序不需要用到全部的IR指令和数据类型。
2. 暂不想了解IR过多的细节,可能比较耗费时间。

这样做的话,可以比较快地发现暂不支持的C语言特性,如某些数据类型、运算符、寻址方式。

以C程序为出发点的后端测试方式写在
http://llvm.1065342.n5.nabble.com/How-to-write-a-regression-test-case-td48211.html
中。

>
> ?f任
>
> P.S. 我看你在 LLVM ML 很活?S,最近看到很多中??人在上面?l信。不?e。:)

大家积极参与,是个好现象。我是正好在处理类似的问题,所以了解一点。

>
> --
> Wei-Ren Chen (???f任)
> 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
>



-- 
杨勇勇 (Yang Yongyong)

Other related posts:

  • » [hellogcc] Re: [hellogcc] Re: [hellogcc] [投稿] LLVM 3.1 �y�������� - Triple Yang