aha,i add cBackend into llvm version 162227,my test run passed. it so hapyy! thanks for all of you! still a question: what does "; PR1028" means? best wishes, changcheng On Tue, Aug 28, 2012 at 2:35 PM, Changcheng Wang <changcheng at multicorewareinc.com> wrote:> hi,yang: > > thanks,i replaced "{helloworld}" with "helloworld" as you said,and the > test run well on llvm version 3.0,but fail on llvm 162227,is it right? > llvm version 162227 do not support it? > > your, > changcheng > > > > On Tue, Aug 28, 2012 at 2:28 PM, Triple Yang <triple.yang at gmail.com> wrote: >> 2012/8/28 Changcheng Wang <changcheng at multicorewareinc.com>: >>> hi,yang: >>> another question,i write a test like this: >>> /*****test start******/ >>> ; RUN: llc -march=c < %s | FileCheck %s >>> >>> ; ModuleID = 'hello.c' >>> target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64- >>> f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128- >>> n8:16:32:64-S128" >>> target triple = "x86_64-unknown-linux-gnu" >>> >>> @.str = private unnamed_addr constant [12 x i8] c"helloworld\0A\00", align 1 >>> >>> define i32 @main() nounwind uwtable { >>> entry: >>> %retval = alloca i32, align 4 >>> store i32 0, i32* %retval >>> %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8]* >>> @.str, i32 0, i32 0)) >>> ret i32 0 >>> } >>> >>> declare i32 @printf(i8*, ...) >>> ; >>> >>> ;CHECK: main >>> ;CHECK: printf >>> /******test end*******/ >>> i run the example ok,now i what to check if the file llc ouput contain >>> a string "helloworld",so i add a sentence ";CHECK: {helloworld}" after >>> ";CHECK: printf".but it failed.why? >> >> Why do you check "{helloworld}" rather than "helloworld"? >> >> If you are not sure a string pattern does exist in result file, >> compile it manually and check the content before >> adding a CHECK to test it. >> >>> >>> yours, >>> changcheng >>> >>> >>> On Tue, Aug 28, 2012 at 12:38 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>> You are welcome. >>>> >>>> /* example.c */ >>>> // RUN: clang %s -S -O0 -emit-llvm -o %t.ll >>>> // RUN: llc %t.ll -O0 -march=x86 -o %t.s >>>> // RUN: FileCheck < %t.s %s >>>> >>>> >>>> // CHECK: fct >>>> unsigned int fct(unsigned int n) { >>>> if(n>0) return fct(n-1)*n; >>>> else return 1; >>>> } >>>> /* end example.c */ >>>> >>>> >>>> /* lit.local.cfg */ >>>> config.suffixes = ['.c', '.cpp', '.ll'] >>>> >>>> targets = set(config.root.targets_to_build.split()) >>>> if not 'VPU' in targets: >>>> config.unsupported = True >>>> /* end lit.local.cfg */ >>>> >>>> >>>> 2012/8/28 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>> hi,yang: >>>>> thanks for your help! >>>>> my net is so poor that i can not donwload your attachment. >>>>> would you like to paste here,or send to my other email:200005275 at 163.com? >>>>> >>>>> yours >>>>> >>>>> changcheng >>>>> >>>>> >>>>> >>>>> On Tue, Aug 28, 2012 at 11:43 AM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>> Wang, >>>>>> >>>>>> Attachment is a simple example, you may put it in test/CodeGen, and run with >>>>>> >>>>>> llvm-lit C90 >>>>>> >>>>>> It worked ok in my llvm 3.2 devel. Let know if you run into any trouble. >>>>>> >>>>>> Regards. >>>>>> >>>>>> 2012/8/27 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>> hi,Yang: >>>>>>> if you can give me a examle,which check out a string(such as "abcd") >>>>>>> from a file(such as aaa.c) with fileCheck? >>>>>>> i tried to write it but failed. >>>>>>> >>>>>>> thanks for your help! >>>>>>> >>>>>>> best wished! >>>>>>> >>>>>>> changcheng >>>>>>> >>>>>>> On Wed, Aug 22, 2012 at 9:30 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>> I guess so. >>>>>>>> FileCheck has powerful extensions than just matching some strings so that >>>>>>>> it can support complex situations. >>>>>>>> >>>>>>>> 2012/8/22 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>> yeah,i see. >>>>>>>>> i thought FileCheck check if the same string in the two file,is it? >>>>>>>>> the file t.s maybe do not have the same string with %s,so FileCheck >>>>>>>>> perhaps give a fail. >>>>>>>>> i am not sure about it. >>>>>>>>> >>>>>>>>> On Wed, Aug 22, 2012 at 3:32 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>> 2012/8/22 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>> the example is more like what i need,it is so nice. >>>>>>>>>>> but,i am indefinite if "RUN: FileCheck < %t.s %s" can pass,i >>>>>>>>>>> understand that t.s was translate from t.ll,%s means read the local >>>>>>>>>>> source,are they the same? >>>>>>>>>> >>>>>>>>>> %t indicates a temporary file for output. ".s" is just a suffix I used >>>>>>>>>> conventionly. >>>>>>>>>> You can replace it with any string you like. >>>>>>>>>> >>>>>>>>>> See entry "tmp" in http://llvm.org/docs/TestingGuide.html#rtvars >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Wed, Aug 22, 2012 at 1:55 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>>>> I did an experiment just now with a test case like: >>>>>>>>>>>> // RUN: clang %s -S -emit-llvm -o %t.ll >>>>>>>>>>>> // RUN: llc %t.ll -o %t.s >>>>>>>>>>>> // RUN: FileCheck < %t.s %s >>>>>>>>>>>> >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> // CHECK: ... >>>>>>>>>>>> >>>>>>>>>>>> And it worked. >>>>>>>>>>>> >>>>>>>>>>>> It seems clang does not take stdin as its input, so "clang < %s" fails. >>>>>>>>>>>> Meanwhile, both "llc < %t.ll" and "llc %t.ll" work. >>>>>>>>>>>> >>>>>>>>>>>> 2012/8/22 Triple Yang <triple.yang at gmail.com>: >>>>>>>>>>>>> 2012/8/21 Triple Yang <triple.yang at gmail.com>: >>>>>>>>>>>>>> 2012/8/21 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>>>>>> Hi,Yang >>>>>>>>>>>>>>> thanks for your entire answer,i will do it follow you. >>>>>>>>>>>>>>> still another question puzzled me:i write a hello.c file like this: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> //RUN: llc -march=c < %s | FileCheck %s >>>>>>>>>>>>>>> #include"stdio.h" >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> int main() { >>>>>>>>>>>>>>> printf ("Helloworld.\n"); >>>>>>>>>>>>>>> return 0; >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> in fact, i want to thanslate it to a hello.ll file like this: >>>>>>>>>>>>>>> ;RUN: llc -march=c < %s | FileCheck %s >>>>>>>>>>>>>>> ....... >>>>>>>>>>>>>>> ;CHECK..... >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> but,when i thanslate the hello.c with clang,the sentence "//RUN: llc >>>>>>>>>>>>>>> -march=c < %s | FileCheck %s" was treated as comment. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> it samed the method translating hello.c to hello.ll is wrong,isnot it? >>>>>>>>>>>>>> >>>>>>>>>>>>>> To translate a .c file to a .ll file, you should wirte, for example, >>>>>>>>>>>>>> clang -emit-llvm -S test.c -o test.ll >>>>>>>>>>>>>> >>>>>>>>>>>>>> And the corresponding command for regression test might be: >>>>>>>>>>>>>> ; RUN: clang < %s -emit-llvm -S | FileCheck %s >>>>>>>>>>>>> >>>>>>>>>>>>> We can write: >>>>>>>>>>>>> // RUN: clang < %s -emit-llvm -S >>>>>>>>>>>>> in a .c file to test clang. >>>>>>>>>>>>> >>>>>>>>>>>>> And if we use FileCheck, like: >>>>>>>>>>>>> // RUN: clang < %s -emit-llvm -S | FileCheck %s >>>>>>>>>>>>> make sure there is some "// CHECK:" in that file, or lit will report a failure. >>>>>>>>>>>>> >>>>>>>>>>>>> See utils/lit/lit/ExampleTests/Clang for more details. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Regards. >>>>>>>>>>>>>> >>>>>>>>>>>>>> (PS. When you reply to this email, make sure you send a copy to >>>>>>>>>>>>>> llvmdev at cs.uiuc.edu) >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> thanks very much! >>>>>>>>>>>>>>> best wishes >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> changcheng >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Tue, Aug 21, 2012 at 10:46 AM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>>>>>>>> Hi, changcheng, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> There are following steps to be taken to write a test case: >>>>>>>>>>>>>>>> 1. create a directory in test, say "test/XXX" >>>>>>>>>>>>>>>> 2. create a file named lit.local.cfg, which is a configuration file. >>>>>>>>>>>>>>>> The straightforward way is to copy an existed one, >>>>>>>>>>>>>>>> like "test/CodeGen/SPARC/lit.local.cfg". You might need make some >>>>>>>>>>>>>>>> modification on it. >>>>>>>>>>>>>>>> 3. create a file, say "example.ll" >>>>>>>>>>>>>>>> (The name of file does not matter, but the suffix of the file name >>>>>>>>>>>>>>>> DOES matter. See config.suffixes = [ ... ] in lit.local.cfg) >>>>>>>>>>>>>>>> for more details. >>>>>>>>>>>>>>>> example.ll includes normal content of LLVM IR, and the ";RUN ..." >>>>>>>>>>>>>>>> directives at the beginning of the file. >>>>>>>>>>>>>>>> 4. run all regression test cases with "make check", which includes >>>>>>>>>>>>>>>> above test case newly added. >>>>>>>>>>>>>>>> Or you might want to run just that case with "llvm-lit test/XXX" >>>>>>>>>>>>>>>> or "llvm-lit test/XXX/example.ll" >>>>>>>>>>>>>>>> llvm-lit resides in BUILD tree, distinguished from source tree and >>>>>>>>>>>>>>>> install tree. You can find it under >>>>>>>>>>>>>>>> your-build-tree/Release+Asserts/bin/ or >>>>>>>>>>>>>>>> your-build-tree/Debug+Asserts/bin/ or likewise, which depends on your >>>>>>>>>>>>>>>> build >>>>>>>>>>>>>>>> configuration. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> By the way, in the following ";RUN ..." directive >>>>>>>>>>>>>>>> ; RUN: llc < %s -march=x86 | FileCheck %s >>>>>>>>>>>>>>>> %s indicates current file under test. I guess the first %s stands for >>>>>>>>>>>>>>>> the input for llc, while the second and last %s specifies >>>>>>>>>>>>>>>> what to check using "; CHECK ..." directives since you write them down >>>>>>>>>>>>>>>> on exactly CURRENT file. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hope it work for you. >>>>>>>>>>>>>>>> Regards. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2012/8/20 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>>>>>>>> hi,all: >>>>>>>>>>>>>>>>> i really want to how to write a regression test case,but i do not find >>>>>>>>>>>>>>>>> out a entire document about it. >>>>>>>>>>>>>>>>> By reading LLVM Testing Infrastructure Guide and FileCheck - Flexible >>>>>>>>>>>>>>>>> pattern matching file verifier, i only have a idea,but it is not >>>>>>>>>>>>>>>>> enough for me to write a test case.i need more detail about how to >>>>>>>>>>>>>>>>> write a RUN:lines. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> thanks for you scan,wish your letter. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> best wishes, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> changcheng >>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>> LLVM Developers mailing list >>>>>>>>>>>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>>>>>>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> 杨勇勇 (Yang Yongyong) >>>> >>>> >>>> >>>> -- >>>> 杨勇勇 (Yang Yongyong) >> >> >> >> -- >> 杨勇勇 (Yang Yongyong)
Cong! I don't know about PR1028. try grep'ing the source codes to find anything relative. 2012/8/28 Changcheng Wang <changcheng at multicorewareinc.com>:> aha,i add cBackend into llvm version 162227,my test run passed. > it so hapyy! > thanks for all of you! > > still a question: > what does "; PR1028" means? > > best wishes, > > changcheng > > On Tue, Aug 28, 2012 at 2:35 PM, Changcheng Wang > <changcheng at multicorewareinc.com> wrote: >> hi,yang: >> >> thanks,i replaced "{helloworld}" with "helloworld" as you said,and the >> test run well on llvm version 3.0,but fail on llvm 162227,is it right? >> llvm version 162227 do not support it? >> >> your, >> changcheng >> >> >> >> On Tue, Aug 28, 2012 at 2:28 PM, Triple Yang <triple.yang at gmail.com> wrote: >>> 2012/8/28 Changcheng Wang <changcheng at multicorewareinc.com>: >>>> hi,yang: >>>> another question,i write a test like this: >>>> /*****test start******/ >>>> ; RUN: llc -march=c < %s | FileCheck %s >>>> >>>> ; ModuleID = 'hello.c' >>>> target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64- >>>> f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128- >>>> n8:16:32:64-S128" >>>> target triple = "x86_64-unknown-linux-gnu" >>>> >>>> @.str = private unnamed_addr constant [12 x i8] c"helloworld\0A\00", align 1 >>>> >>>> define i32 @main() nounwind uwtable { >>>> entry: >>>> %retval = alloca i32, align 4 >>>> store i32 0, i32* %retval >>>> %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8]* >>>> @.str, i32 0, i32 0)) >>>> ret i32 0 >>>> } >>>> >>>> declare i32 @printf(i8*, ...) >>>> ; >>>> >>>> ;CHECK: main >>>> ;CHECK: printf >>>> /******test end*******/ >>>> i run the example ok,now i what to check if the file llc ouput contain >>>> a string "helloworld",so i add a sentence ";CHECK: {helloworld}" after >>>> ";CHECK: printf".but it failed.why? >>> >>> Why do you check "{helloworld}" rather than "helloworld"? >>> >>> If you are not sure a string pattern does exist in result file, >>> compile it manually and check the content before >>> adding a CHECK to test it. >>> >>>> >>>> yours, >>>> changcheng >>>> >>>> >>>> On Tue, Aug 28, 2012 at 12:38 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>> You are welcome. >>>>> >>>>> /* example.c */ >>>>> // RUN: clang %s -S -O0 -emit-llvm -o %t.ll >>>>> // RUN: llc %t.ll -O0 -march=x86 -o %t.s >>>>> // RUN: FileCheck < %t.s %s >>>>> >>>>> >>>>> // CHECK: fct >>>>> unsigned int fct(unsigned int n) { >>>>> if(n>0) return fct(n-1)*n; >>>>> else return 1; >>>>> } >>>>> /* end example.c */ >>>>> >>>>> >>>>> /* lit.local.cfg */ >>>>> config.suffixes = ['.c', '.cpp', '.ll'] >>>>> >>>>> targets = set(config.root.targets_to_build.split()) >>>>> if not 'VPU' in targets: >>>>> config.unsupported = True >>>>> /* end lit.local.cfg */ >>>>> >>>>> >>>>> 2012/8/28 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>> hi,yang: >>>>>> thanks for your help! >>>>>> my net is so poor that i can not donwload your attachment. >>>>>> would you like to paste here,or send to my other email:200005275 at 163.com? >>>>>> >>>>>> yours >>>>>> >>>>>> changcheng >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Aug 28, 2012 at 11:43 AM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>> Wang, >>>>>>> >>>>>>> Attachment is a simple example, you may put it in test/CodeGen, and run with >>>>>>> >>>>>>> llvm-lit C90 >>>>>>> >>>>>>> It worked ok in my llvm 3.2 devel. Let know if you run into any trouble. >>>>>>> >>>>>>> Regards. >>>>>>> >>>>>>> 2012/8/27 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>> hi,Yang: >>>>>>>> if you can give me a examle,which check out a string(such as "abcd") >>>>>>>> from a file(such as aaa.c) with fileCheck? >>>>>>>> i tried to write it but failed. >>>>>>>> >>>>>>>> thanks for your help! >>>>>>>> >>>>>>>> best wished! >>>>>>>> >>>>>>>> changcheng >>>>>>>> >>>>>>>> On Wed, Aug 22, 2012 at 9:30 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>> I guess so. >>>>>>>>> FileCheck has powerful extensions than just matching some strings so that >>>>>>>>> it can support complex situations. >>>>>>>>> >>>>>>>>> 2012/8/22 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>> yeah,i see. >>>>>>>>>> i thought FileCheck check if the same string in the two file,is it? >>>>>>>>>> the file t.s maybe do not have the same string with %s,so FileCheck >>>>>>>>>> perhaps give a fail. >>>>>>>>>> i am not sure about it. >>>>>>>>>> >>>>>>>>>> On Wed, Aug 22, 2012 at 3:32 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>>> 2012/8/22 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>>> the example is more like what i need,it is so nice. >>>>>>>>>>>> but,i am indefinite if "RUN: FileCheck < %t.s %s" can pass,i >>>>>>>>>>>> understand that t.s was translate from t.ll,%s means read the local >>>>>>>>>>>> source,are they the same? >>>>>>>>>>> >>>>>>>>>>> %t indicates a temporary file for output. ".s" is just a suffix I used >>>>>>>>>>> conventionly. >>>>>>>>>>> You can replace it with any string you like. >>>>>>>>>>> >>>>>>>>>>> See entry "tmp" in http://llvm.org/docs/TestingGuide.html#rtvars >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Aug 22, 2012 at 1:55 PM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>>>>> I did an experiment just now with a test case like: >>>>>>>>>>>>> // RUN: clang %s -S -emit-llvm -o %t.ll >>>>>>>>>>>>> // RUN: llc %t.ll -o %t.s >>>>>>>>>>>>> // RUN: FileCheck < %t.s %s >>>>>>>>>>>>> >>>>>>>>>>>>> ... >>>>>>>>>>>>> >>>>>>>>>>>>> // CHECK: ... >>>>>>>>>>>>> >>>>>>>>>>>>> And it worked. >>>>>>>>>>>>> >>>>>>>>>>>>> It seems clang does not take stdin as its input, so "clang < %s" fails. >>>>>>>>>>>>> Meanwhile, both "llc < %t.ll" and "llc %t.ll" work. >>>>>>>>>>>>> >>>>>>>>>>>>> 2012/8/22 Triple Yang <triple.yang at gmail.com>: >>>>>>>>>>>>>> 2012/8/21 Triple Yang <triple.yang at gmail.com>: >>>>>>>>>>>>>>> 2012/8/21 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>>>>>>> Hi,Yang >>>>>>>>>>>>>>>> thanks for your entire answer,i will do it follow you. >>>>>>>>>>>>>>>> still another question puzzled me:i write a hello.c file like this: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> //RUN: llc -march=c < %s | FileCheck %s >>>>>>>>>>>>>>>> #include"stdio.h" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> int main() { >>>>>>>>>>>>>>>> printf ("Helloworld.\n"); >>>>>>>>>>>>>>>> return 0; >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> in fact, i want to thanslate it to a hello.ll file like this: >>>>>>>>>>>>>>>> ;RUN: llc -march=c < %s | FileCheck %s >>>>>>>>>>>>>>>> ....... >>>>>>>>>>>>>>>> ;CHECK..... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> but,when i thanslate the hello.c with clang,the sentence "//RUN: llc >>>>>>>>>>>>>>>> -march=c < %s | FileCheck %s" was treated as comment. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> it samed the method translating hello.c to hello.ll is wrong,isnot it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> To translate a .c file to a .ll file, you should wirte, for example, >>>>>>>>>>>>>>> clang -emit-llvm -S test.c -o test.ll >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> And the corresponding command for regression test might be: >>>>>>>>>>>>>>> ; RUN: clang < %s -emit-llvm -S | FileCheck %s >>>>>>>>>>>>>> >>>>>>>>>>>>>> We can write: >>>>>>>>>>>>>> // RUN: clang < %s -emit-llvm -S >>>>>>>>>>>>>> in a .c file to test clang. >>>>>>>>>>>>>> >>>>>>>>>>>>>> And if we use FileCheck, like: >>>>>>>>>>>>>> // RUN: clang < %s -emit-llvm -S | FileCheck %s >>>>>>>>>>>>>> make sure there is some "// CHECK:" in that file, or lit will report a failure. >>>>>>>>>>>>>> >>>>>>>>>>>>>> See utils/lit/lit/ExampleTests/Clang for more details. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Regards. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> (PS. When you reply to this email, make sure you send a copy to >>>>>>>>>>>>>>> llvmdev at cs.uiuc.edu) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> thanks very much! >>>>>>>>>>>>>>>> best wishes >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> changcheng >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Tue, Aug 21, 2012 at 10:46 AM, Triple Yang <triple.yang at gmail.com> wrote: >>>>>>>>>>>>>>>>> Hi, changcheng, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> There are following steps to be taken to write a test case: >>>>>>>>>>>>>>>>> 1. create a directory in test, say "test/XXX" >>>>>>>>>>>>>>>>> 2. create a file named lit.local.cfg, which is a configuration file. >>>>>>>>>>>>>>>>> The straightforward way is to copy an existed one, >>>>>>>>>>>>>>>>> like "test/CodeGen/SPARC/lit.local.cfg". You might need make some >>>>>>>>>>>>>>>>> modification on it. >>>>>>>>>>>>>>>>> 3. create a file, say "example.ll" >>>>>>>>>>>>>>>>> (The name of file does not matter, but the suffix of the file name >>>>>>>>>>>>>>>>> DOES matter. See config.suffixes = [ ... ] in lit.local.cfg) >>>>>>>>>>>>>>>>> for more details. >>>>>>>>>>>>>>>>> example.ll includes normal content of LLVM IR, and the ";RUN ..." >>>>>>>>>>>>>>>>> directives at the beginning of the file. >>>>>>>>>>>>>>>>> 4. run all regression test cases with "make check", which includes >>>>>>>>>>>>>>>>> above test case newly added. >>>>>>>>>>>>>>>>> Or you might want to run just that case with "llvm-lit test/XXX" >>>>>>>>>>>>>>>>> or "llvm-lit test/XXX/example.ll" >>>>>>>>>>>>>>>>> llvm-lit resides in BUILD tree, distinguished from source tree and >>>>>>>>>>>>>>>>> install tree. You can find it under >>>>>>>>>>>>>>>>> your-build-tree/Release+Asserts/bin/ or >>>>>>>>>>>>>>>>> your-build-tree/Debug+Asserts/bin/ or likewise, which depends on your >>>>>>>>>>>>>>>>> build >>>>>>>>>>>>>>>>> configuration. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> By the way, in the following ";RUN ..." directive >>>>>>>>>>>>>>>>> ; RUN: llc < %s -march=x86 | FileCheck %s >>>>>>>>>>>>>>>>> %s indicates current file under test. I guess the first %s stands for >>>>>>>>>>>>>>>>> the input for llc, while the second and last %s specifies >>>>>>>>>>>>>>>>> what to check using "; CHECK ..." directives since you write them down >>>>>>>>>>>>>>>>> on exactly CURRENT file. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hope it work for you. >>>>>>>>>>>>>>>>> Regards. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2012/8/20 Changcheng Wang <changcheng at multicorewareinc.com>: >>>>>>>>>>>>>>>>>> hi,all: >>>>>>>>>>>>>>>>>> i really want to how to write a regression test case,but i do not find >>>>>>>>>>>>>>>>>> out a entire document about it. >>>>>>>>>>>>>>>>>> By reading LLVM Testing Infrastructure Guide and FileCheck - Flexible >>>>>>>>>>>>>>>>>> pattern matching file verifier, i only have a idea,but it is not >>>>>>>>>>>>>>>>>> enough for me to write a test case.i need more detail about how to >>>>>>>>>>>>>>>>>> write a RUN:lines. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> thanks for you scan,wish your letter. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> best wishes, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> changcheng >>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>> LLVM Developers mailing list >>>>>>>>>>>>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>>>>>>>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 杨勇勇 (Yang Yongyong) >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 杨勇勇 (Yang Yongyong) >>>>> >>>>> >>>>> >>>>> -- >>>>> 杨勇勇 (Yang Yongyong) >>> >>> >>> >>> -- >>> 杨勇勇 (Yang Yongyong)-- 杨勇勇 (Yang Yongyong)
> still a question: > what does "; PR1028" means?I believe it means this test case addresses bug report (pr, problem report) 1028 [1]. In other words, this test case guarantee that pr1028 will not back again. If so, it will fail. Regards, chenwj [1] http://llvm.org/bugs/show_bug.cgi?id=1028 -- 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
thank yang,thank Wei-Ren! i feel i am a question boy,because i has another question now. i want to check if a program output right result,which example in llvm/test/* can give me some idea? suppose i have a helloworld program if it run well,it can give me a result "helloworld",so i want to check if the result is "helloworld". best wishes! changcheng On Tue, Aug 28, 2012 at 2:58 PM, 陳韋任 (Wei-Ren Chen) <chenwj at iis.sinica.edu.tw> wrote:>> still a question: >> what does "; PR1028" means? > > I believe it means this test case addresses bug report (pr, problem > report) 1028 [1]. In other words, this test case guarantee that pr1028 > will not back again. If so, it will fail. > > Regards, > chenwj > > [1] http://llvm.org/bugs/show_bug.cgi?id=1028 > > -- > 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
Very informative. Thanks. 2012/8/28 ��f�� (Wei-Ren Chen) <chenwj at iis.sinica.edu.tw>:>> still a question: >> what does "; PR1028" means? > > I believe it means this test case addresses bug report (pr, problem > report) 1028 [1]. In other words, this test case guarantee that pr1028 > will not back again. If so, it will fail. > > Regards, > chenwj > > [1] http://llvm.org/bugs/show_bug.cgi?id=1028 > > -- > 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)