[LLVMdev] Newbee question: LLVM backend regression tests for thumb1 targets on simulator possible?

Jonathan Roelofs jonathan at codesourcery.com
Mon Dec 15 10:31:12 PST 2014



On 12/15/14 4:29 AM, Bjoern Haase wrote:
>
> Hello,
>
> as a newbee, I'd appreciate some support on regression test setup.
>
> Specifically, I am interrested in the feature of tail call optimizations for
> the ARM v6m targets. This feature currently seems to be completely
> deactivated at the moment (v6m being based on thumb1 ?!). According to my
> code-reading, this feature will involve some modifications in epilogue
> generation.
>
> My work on a gcc backend did show me that for a beginner like me, it is rather
> likely that the first attempts will break something.
:)
>
> Thus, being completely new to the llvm project I think that it's
> essential to first establish a suitable regression test setup. My plan
> is to run the tests for the v4t platform in thumb-only mode where free
> simulators are available and which behaves (at least with respect to the
> epilogue) very much like v6m.
Why not test your v6m changes on a Cortex-m0 QEMU? Semihosted applications are 
pretty easy to get going, something like:

$ qemu-system-arm -semihosting -M integratorcp -cpu cortex-m0 -kernel a.out

Thumv4t support is a bit spotty in llvm as it's not very well tested. The 
problem I run into most (and fixed several times), is that thumbv4t doesn't have 
a lo->lo mov instruction that doesn't clobber cpsr. That being said, it does 
work for the most part... just something to watch out for.
>
>  From former work on gcc I'm used to the possibilty to run regression
> tests in a simulator for the target platform (there with the expect
> script mechanism). In the documentation on the web, I did, however, not
> yet find information on a comparable feature for llvm.
>
> Therefore the specific questions:
>
> - Is there a mechanism to run backend testsuite runs in a simulation
> framework and if yes, could you give me a hint on how to find information
Not that I know of, no.

I routinely run the libc++ & libc++abi test suites in QEMU, but that's more of a 
whole-toolchain test, rather that just a backend test. You can get surprisingly 
far without simulator testing, so for most things, LLVM doesn't use it for 
testing. This makes it easier for any random developer to check out the llvm 
sources, build them, and run the testsuite, and not have to have simulators 
installed for all the different backends.
> - If not, how is regression testing for the thumb1 targets currently
> implemented?
We use the LIT framework http://llvm.org/docs/CommandGuide/lit.html to test the 
compiler. Mostly this means feeding in llvm IR, and using FileCheck 
http://llvm.org/docs/CommandGuide/FileCheck.html (which is basically a glorified 
grep) to verify that the assembly produced is the same as what the test expects 
to be generated.

To run these tests, use the 'make check-all' target from the build directory.


Cheers,

Jon
>
> Yours,
>
> Björn Haase
>
> P.S.: Of course, any hint with respect to sibling call optimization
> would also be appreciated in a second step. I actually already found some helpful
> information in the sources.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-- 
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded



More information about the llvm-dev mailing list