[Openmp-dev] Switching testsuite to llvm-lit

Hal Finkel hfinkel at anl.gov
Thu Jul 16 20:14:27 PDT 2015


----- Original Message -----
> From: "Jonathan L Peyton" <jonathan.l.peyton at intel.com>
> To: "Sunita Chandrasekaran" <sunita at cs.uh.edu>
> Cc: openmp-dev at dcs-maillist2.engr.illinois.edu
> Sent: Thursday, July 16, 2015 8:23:29 PM
> Subject: Re: [Openmp-dev] Switching testsuite to llvm-lit
> 
> 
> 
> 
> 
> From what I can tell, the current testsuite is triggered through
> Makefile targets to call runtest.pl which generates, then compiles,
> then runs the various tests, then at some point each test is
> compiled into the LLVM IR and RUN: and CHECK: lines are prepended to
> that generated file (.ll). These are then run through lit. So the
> tests get checked twice, once by the Perl system and once by lit.
> What I want is for there to be plain ole C files that are the tests.
> These C files should have the RUN: and CHECK: lines with no Perl
> required to generate the test files. I’m currently making a
> concerted effort to have the entire build system Perl-free. Another
> thing I’m confused about is the lit.site.cfg.in file which has to be
> configured to be used. I don’t see any place where this is
> configured in the current system. I may be missing it though.
> 
> 
> 
> So, in short, I’m trying to get rid of the “middle-man” Perl step
> which generates, compiles, and runs the test files, by just having
> the test files be standalone C files which lit can handle. Also,
> these changes would enable different generators to test OpenMP, for
> example Ninja build systems. The tests themselves are great, and I
> truly appreciate their contribution, but they need to be better
> integrated into the current standalone CMake build system and the
> LLVM build system as a whole.
> 

That's right. The test files should just be in C/C++; the setup should mirror that for compiler-rt and libc++.

 -Hal

> 
> 
> -- Johnny
> 
> 
> 
> From: sunisg123 at gmail.com [mailto:sunisg123 at gmail.com] On Behalf Of
> Sunita Chandrasekaran
> Sent: Thursday, July 16, 2015 6:44 PM
> To: Peyton, Jonathan L
> Cc: openmp-dev at dcs-maillist2.engr.illinois.edu
> Subject: Re: [Openmp-dev] Switching testsuite to llvm-lit
> 
> 
> 
> 
> Hi Jonathan
> 
> 
> Going through your steps, I am thinking this is close to what we (UH)
> had done and committed to the llvm trunk, especially creating those
> .cfg files and the RUN rules ?
> 
> 
> Sorry if I am mistaken.
> 
> 
> 
> 
> 
> If what you are doing takes what we did and makes it more compatible
> to llvm-lit, I understand that. But I would hope that you don't have
> to start from scratch..
> 
> 
> Our testsuite was also using llvm-lit.
> 
> 
> 
> 
> 
> -Sunita
> 
> 
> 
> 
> 
> 
> 
> 
> On Thu, Jul 16, 2015 at 4:01 PM, Peyton, Jonathan L <
> jonathan.l.peyton at intel.com > wrote:
> 
> 
> 
> 
> 
> Hello everyone,
> 
> 
> 
> It has been requested, rightfully so, on more than one occasion that
> the testsuite be llvm-lit compatible. This means calling llvm-lit
> directly inside the testsuite directory where it would pick up the
> configuration from lit.site.cfg and then run each test similar to
> other LLVM projects. Perl would neither exist nor be required as it
> is now for running the tests. I was beginning to work on converting
> this and would like input, feedback on this process.
> 
> 
> 
> What I’ve done so far includes:
> 
> 1) Creating the tests --- Right now, the tests are stored as template
> files that must be translated by a perl script. I’ve manually
> generated all the tests by running inside the testsuite/ directory
> 
> $ template_parser_c.pl --test --noorphan c/$filename $filename
> 
> This generates all the tests indentically to how runtest.pl does so.
> 
> 2) I’ve then cleaned up the files, removing any reference to a
> logFile (llvm-lit will log for you) and cleaned up the typical
> generated code formatting problems so it looks like acceptable C
> code.
> 
> 3) Then, I’ve created a basic lit.site.cfg.in file and a basic
> lit.cfg file (both based off of libcxx’s)
> 
> 4) Lastly, I’ve been able to successfully run the tests using
> llvm-lit directly, but not yet from the build system itself as
> lit.site.cfg.in still needs work (I manually configure lit.site.cfg
> then run llvm-lit).
> 
> 
> 
> Each test looks similar to the one below where the RUN: line says to
> compile the source file (%s) put it in a temp file (%t) , run the
> temp file, and compare the output of the temp file with the CHECK:
> line below. if Pass was printed, then the test passed, if not then
> the test failed.
> 
> 
> 
> // RUN: %clang %openmp_flag %cflags %s -o %t && %t | FileCheck %s
> 
> #include <stdio.h>
> 
> #include "omp_testsuite.h"
> 
> #include "omp_my_sleep.h"
> 
> 
> 
> int test_omp_for_nowait()
> 
> {
> 
> [code to test it]
> 
> }
> 
> 
> 
> int main()
> 
> {
> 
> int i;
> 
> int num_failed=0;
> 
> 
> 
> for(i = 0; i < REPETITIONS; i++) {
> 
> if(!test_omp_for_nowait()) {
> 
> num_failed++;
> 
> }
> 
> }
> 
> 
> 
> if(num_failed==0) {
> 
> printf("Pass\n");
> 
> } else {
> 
> printf("Failed %d out of %d times\n", num_failed, REPETITIONS);
> 
> }
> 
> // CHECK: Pass
> 
> return num_failed;
> 
> }
> 
> 
> 
> Any feedback or comments are welcome. I was going to continue to work
> on it and get a first working iteration that could be run from a
> CMake build tree, then post a patch of the new files.
> 
> 
> 
> -- Johnny
> 
> 
> 
> 
> _______________________________________________
> Openmp-dev mailing list
> Openmp-dev at dcs-maillist2.engr.illinois.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev
> 
> 
> _______________________________________________
> Openmp-dev mailing list
> Openmp-dev at dcs-maillist2.engr.illinois.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory




More information about the Openmp-dev mailing list