mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
Reformat. A few minor edits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9434 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f54c437714
commit
af19f2e52c
@ -1,351 +1,427 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>LLVM Test Suite Guide</title>
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
</head>
|
<link rel="stylesheet" href="llvm.css" type="text/css" media="screen" />
|
||||||
|
<title>LLVM Test Suite Guide</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
<body bgcolor=white>
|
<body>
|
||||||
|
|
||||||
<center><h1>LLVM Test Suite Guide<br></h1></center>
|
<div class="doc_title">
|
||||||
|
LLVM Test Suite Guide
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li><a href="#overview">Overview</a></li>
|
||||||
|
<li><a href="#Requirements">Requirements</a></li>
|
||||||
|
<li><a href="#quick">Quick Start</a></li>
|
||||||
|
<li><a href="#org">LLVM Test Suite Organization</a></li>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#codefragments">Code Fragments</a></li>
|
||||||
|
<li><a href="#wholeprograms">Whole Programs</a></li>
|
||||||
|
</ul>
|
||||||
|
<li><a href="#tree">LLVM Test Suite Tree</a></li>
|
||||||
|
<li><a href="#qmstructure">QMTest Structure</a></li>
|
||||||
|
<li><a href="#progstructure">Programs Structure</a></li>
|
||||||
|
<li><a href="#run">Running the LLVM Tests</a></li>
|
||||||
|
<p><b>Written by John T. Criswell</b></p>
|
||||||
|
</ol>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="overview">Overview</a><hr></h2>
|
<div class="doc_section"><a name="overview">Overview</a></div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
This document is the reference manual for the LLVM test suite. It
|
<div class="doc_text">
|
||||||
|
<p>
|
||||||
|
This document is the reference manual for the LLVM test suite. It
|
||||||
documents the structure of the LLVM test suite, the tools needed to
|
documents the structure of the LLVM test suite, the tools needed to
|
||||||
use it, and how to add and run tests.
|
use it, and how to add and run tests.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="Requirements">Requirements</a><hr></h2>
|
<div class="doc_section"><a name="Requirements">Requirements</a></div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
|
<div class="doc_text">
|
||||||
|
<p>
|
||||||
In order to use the LLVM test suite, you will need all of the software
|
In order to use the LLVM test suite, you will need all of the software
|
||||||
required to build LLVM, plus the following:
|
required to build LLVM, plus the following:
|
||||||
|
</p>
|
||||||
<dl compact>
|
<dl compact>
|
||||||
<dt><A HREF="http://www.qmtest.com">QMTest</A>
|
<dt><A HREF="http://www.qmtest.com">QMTest</A></dt>
|
||||||
<dd>
|
<dd>The LLVM test suite uses QMTest to organize and
|
||||||
The LLVM test suite uses QMTest to organize and run tests.
|
run tests.</dd>
|
||||||
<p>
|
|
||||||
|
|
||||||
<dt><A HREF="http://www.python.org">Python</A>
|
<dt><A HREF="http://www.python.org">Python</A></dt>
|
||||||
<dd>
|
<dd>You will need a Python interpreter that works with
|
||||||
You will need a python interpreter that works with QMTest.
|
QMTest. Python will need zlib and SAX support
|
||||||
Python will need zlib and SAX support enabled.
|
enabled.</dd>
|
||||||
<p>
|
|
||||||
</dl>
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="quick">Quick Start</a><hr></h2>
|
<div class="doc_section"><a name="quick">Quick Start</a></div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
To run all of the tests in LLVM, use the Master Makefile in llvm/test:
|
<div class="doc_text">
|
||||||
<p>
|
<p>
|
||||||
<tt>
|
The tests are located in the LLVM source tree under the directory
|
||||||
cd test
|
<tt>llvm/test</tt>. To run all of the tests in LLVM, use the Master
|
||||||
<br>
|
Makefile in that directory:
|
||||||
make
|
</p>
|
||||||
</tt>
|
<pre>
|
||||||
|
% make -C llvm/test
|
||||||
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
To run only the code fragment tests (i.e. those that do basic testing of
|
To run only the code fragment tests (i.e. those that do basic testing of
|
||||||
LLVM), run the tests organized by QMTest:
|
LLVM), run the tests organized by QMTest:
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<tt>
|
<pre>
|
||||||
cd test
|
% make -C llvm/test qmtest
|
||||||
<br>
|
</pre>
|
||||||
make qmtest
|
|
||||||
</tt>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
To run only the tests that compile and execute whole programs, run the
|
To run only the tests that compile and execute whole programs, run the
|
||||||
Programs tests:
|
Programs tests:
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<tt>
|
<pre>
|
||||||
cd test/Programs
|
% make -C llvm/test/Programs
|
||||||
<br>
|
</pre>
|
||||||
make
|
</div>
|
||||||
</tt>
|
|
||||||
<p>
|
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="org">LLVM Test Suite Organization</a><hr></h2>
|
<div class="doc_section"><h2><a name="org">LLVM Test Suite
|
||||||
|
Organization </a></div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
The LLVM test suite contains two major types of tests:
|
<div class="doc_text">
|
||||||
<ul>
|
<p>The LLVM test suite contains two major categories of tests: code
|
||||||
<li>Code Fragments<br>
|
fragments and whole programs.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="doc_subsection"><a name="codefragments">Code Fragments</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="doc_text">
|
||||||
|
<p>
|
||||||
Code fragments are small pieces of code that test a specific
|
Code fragments are small pieces of code that test a specific
|
||||||
feature of LLVM or trigger a specific bug in LLVM. They are
|
feature of LLVM or trigger a specific bug in LLVM. They are
|
||||||
usually written in LLVM assembly language, but can be
|
usually written in LLVM assembly language, but can be
|
||||||
written in other languages if the test targets a particular language
|
written in other languages if the test targets a
|
||||||
front end.
|
particular language front end.
|
||||||
<p>
|
</p><p>
|
||||||
Code fragments are not complete programs, and they are never executed
|
Code fragments are not complete programs, and they are
|
||||||
to determine correct behavior.
|
never executed to determine correct behavior.
|
||||||
<p>
|
</p><p>
|
||||||
The tests in the llvm/test/Features and llvm/test/Regression directories
|
The tests in the Features and
|
||||||
contain code fragments.
|
Regression directories contain code fragments.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<li>Whole Programs<br>
|
<div class="doc_subsection"><a name="wholeprograms">Whole Programs</a>
|
||||||
Whole Programs are pieces of code which can be compiled and
|
</div>
|
||||||
linked into a stand-alone program that can be executed. These programs
|
|
||||||
are generally written in high level languages such as C or C++, but
|
|
||||||
sometimes they are written straight in LLVM assembly.
|
|
||||||
<p>
|
|
||||||
These programs are compiled and then executed using several different
|
|
||||||
methods (native compiler, LLVM C backend, LLVM JIT, LLVM native code
|
|
||||||
generation, etc). The output of these programs is compared to ensure
|
|
||||||
that LLVM is compiling the program correctly.
|
|
||||||
|
|
||||||
|
<div class="doc_text">
|
||||||
<p>
|
<p>
|
||||||
In addition to compiling and executing programs, whole program tests
|
Whole Programs are pieces of code which can be compiled and
|
||||||
serve as a way of benchmarking LLVM performance, both in terms of the
|
linked into a stand-alone program that can be executed. These
|
||||||
efficiency of the programs generated as well as the speed with which
|
programs are generally written in high level languages such as C
|
||||||
LLVM compiles, optimizes, and generates code.
|
or C++, but sometimes they are written straight in LLVM
|
||||||
|
assembly.
|
||||||
<p>
|
</p><p>
|
||||||
The test/Programs directory contains all tests which compile and
|
These programs are compiled and then executed using several
|
||||||
|
different methods (native compiler, LLVM C backend, LLVM JIT,
|
||||||
|
LLVM native code generation, etc). The output of these programs
|
||||||
|
is compared to ensure that LLVM is compiling the program
|
||||||
|
correctly.
|
||||||
|
</p><p>
|
||||||
|
In addition to compiling and executing programs, whole program
|
||||||
|
tests serve as a way of benchmarking LLVM performance, both in
|
||||||
|
terms of the efficiency of the programs generated as well as the
|
||||||
|
speed with which LLVM compiles, optimizes, and generates code.
|
||||||
|
</p><p>
|
||||||
|
The Programs directory contains all tests which compile and
|
||||||
benchmark whole programs.
|
benchmark whole programs.
|
||||||
</ul>
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="tree">LLVM Test Suite Tree</a><hr></h2>
|
<div class="doc_section"><h2><a name="tree">LLVM Test Suite Tree</a>
|
||||||
|
</div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
The LLVM test suite is broken up into the following directory
|
<div class="doc_text">
|
||||||
hierarchy:
|
<p>Each type of test in the LLVM test suite has its own directory. The
|
||||||
|
major subtrees of the test suite directory tree are as follows:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> Features<br>
|
<li>Features
|
||||||
This directory contains sample codes that test various features
|
<p>
|
||||||
|
This directory contains sample codes that test various features
|
||||||
of the LLVM language. These pieces of sample code are run
|
of the LLVM language. These pieces of sample code are run
|
||||||
through various assembler, disassembler, and optimizer passes.
|
through various assembler, disassembler, and optimizer passes.
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<li>Regression<br>
|
<li>Regression
|
||||||
|
<p>
|
||||||
This directory contains regression tests for LLVM. When a bug
|
This directory contains regression tests for LLVM. When a bug
|
||||||
is found in LLVM, a regression test containing just enough
|
is found in LLVM, a regression test containing just enough
|
||||||
code to reproduce the problem should be written and placed
|
code to reproduce the problem should be written and placed
|
||||||
somewhere underneath this directory. In most cases, this
|
somewhere underneath this directory. In most cases, this
|
||||||
will be a small piece of LLVM assembly language code, often
|
will be a small piece of LLVM assembly language code, often
|
||||||
distilled from an actual application or benchmark.
|
distilled from an actual application or benchmark.
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<li>Programs<br>
|
<li>Programs
|
||||||
The Programs directory contains programs that can be compiled
|
<p>
|
||||||
|
The Programs directory contains programs that can be compiled
|
||||||
with LLVM and executed. These programs are compiled using the
|
with LLVM and executed. These programs are compiled using the
|
||||||
native compiler and various LLVM backends. The output from the
|
native compiler and various LLVM backends. The output from the
|
||||||
program compiled with the native compiler is assumed correct;
|
program compiled with the native compiler is assumed correct;
|
||||||
the results from the other programs are compared to the native
|
the results from the other programs are compared to the native
|
||||||
program output and pass if they match.
|
program output and pass if they match.
|
||||||
<p>
|
</p><p>
|
||||||
In addition for testing correctness, the Programs directory
|
In addition for testing correctness, the Programs directory
|
||||||
also performs timing tests of various LLVM optimizations.
|
also performs timing tests of various LLVM optimizations.
|
||||||
It also records compilation times for the compilers and the
|
It also records compilation times for the compilers and the
|
||||||
JIT. This information can be used to compare the
|
JIT. This information can be used to compare the
|
||||||
effectiveness of LLVM's optimizations and code generation.
|
effectiveness of LLVM's optimizations and code generation.
|
||||||
<p>
|
</p><p>
|
||||||
The Programs directory is subdivided into several smaller
|
The Programs directory is subdivided into several smaller
|
||||||
subdirectories:
|
subdirectories:
|
||||||
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>SingleSource<br>
|
<li>Programs/SingleSource
|
||||||
|
<p>
|
||||||
The SingleSource directory contains test programs that
|
The SingleSource directory contains test programs that
|
||||||
are only a single source file in size. These are
|
are only a single source file in size. These are
|
||||||
usually small benchmark programs or small programs that
|
usually small benchmark programs or small programs that
|
||||||
calculate a particular value. Several such programs are grouped
|
calculate a particular value. Several such programs are
|
||||||
together in each directory.
|
grouped together in each directory.
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<li>MultiSource<br>
|
<li>Programs/MultiSource
|
||||||
The MultiSource directory contains subdirectories which contain
|
<p>
|
||||||
entire programs with multiple source files. Large benchmarks and
|
The MultiSource directory contains subdirectories which
|
||||||
whole applications go here.
|
contain entire programs with multiple source files.
|
||||||
<p>
|
Large benchmarks and whole applications go here.
|
||||||
|
</p>
|
||||||
|
|
||||||
<li>External<br>
|
<li>Programs/External
|
||||||
|
<p>
|
||||||
The External directory contains Makefiles for building
|
The External directory contains Makefiles for building
|
||||||
code that is external to (i.e. not distributed with)
|
code that is external to (i.e. not distributed with)
|
||||||
LLVM. The most prominent member of this directory is
|
LLVM. The most prominent member of this directory is
|
||||||
the SPEC 2000 benchmark suite. The presence and location
|
the SPEC 2000 benchmark suite. The presence and
|
||||||
of these external programs is configured by the LLVM
|
location of these external programs is configured by the
|
||||||
<tt>configure</tt> script.
|
LLVM <tt>configure</tt> script.
|
||||||
|
</p>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
<li>QMTest<br>
|
<li>QMTest
|
||||||
This directory contains the QMTest information files. Inside this
|
<p>
|
||||||
directory are QMTest administration files and the Python code that
|
This directory contains the QMTest information files. Inside
|
||||||
implements the LLVM test and database classes.
|
this directory are QMTest administration files and the Python
|
||||||
|
code that implements the LLVM test and database classes.
|
||||||
|
</p>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="qmstructure">QMTest Structure</a><hr></h2>
|
<div class="doc_section"><h2><a name="qmstructure">QMTest Structure</a>
|
||||||
|
</div>
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
The LLVM test suite is partially driven by QMTest and partially
|
<div class="doc_text">
|
||||||
|
<p>
|
||||||
|
The LLVM test suite is partially driven by QMTest and partially
|
||||||
driven by GNU Make. Specifically, the Features and Regression tests
|
driven by GNU Make. Specifically, the Features and Regression tests
|
||||||
are all driven by QMTest. The Programs directory is currently
|
are all driven by QMTest. The Programs directory is currently
|
||||||
driven by a set of Makefiles.
|
driven by a set of Makefiles.
|
||||||
<p>
|
</p><p>
|
||||||
|
|
||||||
The QMTest system needs to have several pieces of information
|
The QMTest system needs to have several pieces of information
|
||||||
available; these pieces of configuration information are known
|
available; these pieces of configuration information are known
|
||||||
collectively as the "context" in QMTest parlance. Since the context
|
collectively as the "context" in QMTest parlance. Since the context
|
||||||
for LLVM is relatively large, the master Makefile in llvm/test
|
for LLVM is relatively large, the master Makefile in llvm/test
|
||||||
sets it for you.
|
sets it for you.
|
||||||
|
</p><p>
|
||||||
<p>
|
The LLVM database class makes the subdirectories of llvm/test a
|
||||||
|
|
||||||
The LLVM database class makes the directory tree underneath llvm/test a
|
|
||||||
QMTest test database. For each directory that contains tests driven by
|
QMTest test database. For each directory that contains tests driven by
|
||||||
QMTest, it knows what type of test the source file is and how to run it.
|
QMTest, it knows what type of test the source file is and how to run it.
|
||||||
|
</p><p>
|
||||||
<p>
|
Hence, the QMTest namespace is essentially what you see in the
|
||||||
|
Feature and Regression directories, but there is some magic that
|
||||||
Hence, the QMTest namespace is essentially what you see in
|
|
||||||
llvm/test/Feature and llvm/test/Regression, but there is some magic that
|
|
||||||
the database class performs (as described below).
|
the database class performs (as described below).
|
||||||
|
</p><p>
|
||||||
<p>
|
|
||||||
|
|
||||||
The QMTest namespace is currently composed of the following tests and
|
The QMTest namespace is currently composed of the following tests and
|
||||||
test suites:
|
test suites:
|
||||||
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Feature<br>
|
<li>Feature
|
||||||
These are the feature tests found in llvm/test/Feature. They are broken
|
<p>
|
||||||
up into the following categories:
|
These are the feature tests found in the Feature directory.
|
||||||
|
They are broken up into the following categories:
|
||||||
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>ad<br>
|
<li>ad
|
||||||
Assembler/Disassembler tests. These tests verify that a piece of
|
|
||||||
LLVM assembly language can be assembled into bytecode and then
|
|
||||||
disassembled into the original assembly language code.
|
|
||||||
It does this several times to ensure that assembled
|
|
||||||
output can be disassembled and disassembler output can
|
|
||||||
be assembled. It also verifies that the give assembly language file
|
|
||||||
can be assembled correctly.
|
|
||||||
<p>
|
<p>
|
||||||
|
Assembler/Disassembler tests. These tests verify that a
|
||||||
|
piece of LLVM assembly language can be assembled into
|
||||||
|
bytecode and then disassembled into the original
|
||||||
|
assembly language code. It does this several times to
|
||||||
|
ensure that assembled output can be disassembled and
|
||||||
|
disassembler output can be assembled. It also verifies
|
||||||
|
that the give assembly language file can be assembled
|
||||||
|
correctly.
|
||||||
|
</p>
|
||||||
|
|
||||||
<li>opt<br>
|
<li>opt
|
||||||
|
<p>
|
||||||
Optimizer tests. These tests verify that two of the
|
Optimizer tests. These tests verify that two of the
|
||||||
optimizer passes completely optimize a program (i.e.
|
optimizer passes completely optimize a program (i.e.
|
||||||
after a single pass, they cannot optimize a program
|
after a single pass, they cannot optimize a program
|
||||||
any further).
|
any further).
|
||||||
<p>
|
</p>
|
||||||
|
|
||||||
<li>mc<br>
|
<li>mc
|
||||||
Machine code tests. These tests verify that the LLVM assembly
|
|
||||||
language file can be translated into native assembly code.
|
|
||||||
<p>
|
<p>
|
||||||
|
Machine code tests. These tests verify that the LLVM
|
||||||
|
assembly language file can be translated into native
|
||||||
|
assembly code.
|
||||||
|
</p>
|
||||||
|
|
||||||
<li>cc<br>
|
<li>cc
|
||||||
C code tests. These tests verify that the specified LLVM assembly
|
<p>
|
||||||
code can be converted into C source code using the C backend.
|
C code tests. These tests verify that the specified
|
||||||
|
LLVM assembly code can be converted into C source code
|
||||||
|
using the C backend.
|
||||||
|
</p>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
The LLVM database class looks at every file in the Feature
|
||||||
The LLVM database class looks at every file in llvm/test/Feature and
|
directory and creates a fake test hierarchy containing
|
||||||
creates a fake test hierarchy containing
|
<tt>Feature.<testtype>.<testname></tt>. So, if you
|
||||||
Feature.<testtype>.<testname>.
|
add an LLVM assembly language file to the Feature directory, it
|
||||||
So, if you add an LLVM assembly language file to llvm/test/Feature, it
|
actually creates 5 new tests: assembler/disassembler, assembler,
|
||||||
actually creates 5 news test: assembler/disassembler, assembler,
|
|
||||||
optimizer, machine code, and C code.
|
optimizer, machine code, and C code.
|
||||||
|
</p>
|
||||||
|
|
||||||
<li>Regression<br>
|
<li>Regression
|
||||||
These are the regression tests. There is one suite for each directory
|
<p>
|
||||||
in llvm/test/Regression.
|
These are the regression tests. There is one suite for each
|
||||||
<p>
|
subdirectory of the Regression directory. If you add a new
|
||||||
|
subdirectory there, you will need to modify, at least, the
|
||||||
If you add a new directory to llvm/test/Regression, you will need to
|
<tt>RegressionMap</tt> variable in <tt>QMTest/llvmdb.py</tt> so
|
||||||
modify llvm/test/QMTest/llvmdb.py so that it knows what sorts of tests
|
that QMTest knows how to run the tests in the new subdirectory.
|
||||||
are in it and how to run them.
|
</p>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
<h2><a name="progstructure">Programs Structure</a><hr></h2>
|
<div class="doc_section"><h2><a name="progstructure">Programs
|
||||||
<!--===============================================================-->
|
Structure</a></div>
|
||||||
As mentioned previously, the Programs tree in llvm/test provides three types
|
|
||||||
of tests: MultiSource, SingleSource, and External. Each tree is then
|
|
||||||
subdivided into several categories, including applications, benchmarks,
|
|
||||||
regression tests, code that is strange grammatically, etc. These
|
|
||||||
organizations should be relatively self explanatory.
|
|
||||||
<p>
|
|
||||||
In addition to the regular Programs tests, the Programs tree also provides a
|
|
||||||
mechanism for compiling the programs in different ways. If the variable TEST
|
|
||||||
is defined on the gmake command line, the test system will include a Makefile
|
|
||||||
named TEST.<value of TEST variable>.Makefile. This Makefile can modify
|
|
||||||
build rules that yield different results.
|
|
||||||
<p>
|
|
||||||
For example, the LLVM nightly tester uses TEST.nightly.Makefile to create the
|
|
||||||
nightly test reports. To run the nightly tests, run <tt>gmake
|
|
||||||
TEST=nightly</tt>.
|
|
||||||
<p>
|
|
||||||
There are several TEST Makefiles available in the tree. Some of them are
|
|
||||||
designed for internal LLVM research and will not work outside of the LLVM
|
|
||||||
research group. They may still be valuable, however, as a guide to writing
|
|
||||||
your own TEST Makefile for any optimization or analysis passes that you
|
|
||||||
develop with LLVM.
|
|
||||||
|
|
||||||
<!--===============================================================-->
|
|
||||||
<h2><a name="run">Running the LLVM Tests</a><hr></h2>
|
|
||||||
<!--===============================================================-->
|
<!--===============================================================-->
|
||||||
|
|
||||||
First, all tests are executed within the LLVM object directory tree. They
|
<div class="doc_text">
|
||||||
<i>are not</i> executed inside of the LLVM source tree. This is because
|
<p>
|
||||||
the test suite creates temporary files during execution.
|
As mentioned previously, the Programs tree in llvm/test provides three
|
||||||
|
types of tests: MultiSource, SingleSource, and External. Each tree is
|
||||||
|
then subdivided into several categories, including applications,
|
||||||
|
benchmarks, regression tests, code that is strange grammatically, etc.
|
||||||
|
These organizations should be relatively self explanatory.
|
||||||
|
</p><p>
|
||||||
|
In addition to the regular Programs tests, the Programs tree also
|
||||||
|
provides a mechanism for compiling the programs in different ways. If
|
||||||
|
the variable TEST is defined on the gmake command line, the test system
|
||||||
|
will include a Makefile named <tt>TEST.<value of TEST
|
||||||
|
variable>.Makefile</tt>. This Makefile can modify build rules to
|
||||||
|
yield different results.
|
||||||
|
</p><p>
|
||||||
|
For example, the LLVM nightly tester uses <tt>TEST.nightly.Makefile</tt>
|
||||||
|
to create the nightly test reports. To run the nightly tests, run
|
||||||
|
<tt>gmake TEST=nightly</tt>.
|
||||||
|
</p><p>
|
||||||
|
There are several TEST Makefiles available in the tree. Some of them
|
||||||
|
are designed for internal LLVM research and will not work outside of the
|
||||||
|
LLVM research group. They may still be valuable, however, as a guide to
|
||||||
|
writing your own TEST Makefile for any optimization or analysis passes
|
||||||
|
that you develop with LLVM.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>
|
<!--===============================================================-->
|
||||||
|
<div class="doc_section"><h2><a name="run">Running the LLVM Tests</a>
|
||||||
|
</div>
|
||||||
|
<!--===============================================================-->
|
||||||
|
|
||||||
|
<div class="doc_text">
|
||||||
|
<p>
|
||||||
|
First, all tests are executed within the LLVM object directory tree.
|
||||||
|
They <i>are not</i> executed inside of the LLVM source tree. This is
|
||||||
|
because the test suite creates temporary files during execution.
|
||||||
|
</p><p>
|
||||||
The master Makefile in llvm/test is capable of running both the
|
The master Makefile in llvm/test is capable of running both the
|
||||||
QMTest driven tests and the Programs tests. By default, it will run
|
QMTest driven tests and the Programs tests. By default, it will run
|
||||||
all of the tests.
|
all of the tests.
|
||||||
<p>
|
</p><p>
|
||||||
To run only the QMTest driven tests, run <tt>make qmtest</tt> at the
|
To run only the QMTest driven tests, run <tt>make qmtest</tt> at the
|
||||||
command line in llvm/tests. To run a specific qmtest, suffix the test name
|
command line in llvm/tests. To run a specific qmtest, suffix the test
|
||||||
with ".t" when running make.
|
name with ".t" when running make.
|
||||||
<p>
|
</p><p>
|
||||||
For example, to run the Regression.LLC tests, type
|
For example, to run the Regression.LLC tests, type
|
||||||
<tt>make Regression.LLC.t</tt> in llvm/tests.
|
<tt>make Regression.LLC.t</tt> in llvm/tests.
|
||||||
<p>
|
</p><p>
|
||||||
Note that the Makefiles in llvm/test/Features and llvm/test/Regression
|
Note that the Makefiles in llvm/test/Features and llvm/test/Regression
|
||||||
are gone. You must now use QMTest from the llvm/test directory to run them.
|
are gone. You must now use QMTest from the llvm/test directory to run
|
||||||
<p>
|
them.
|
||||||
|
</p><p>
|
||||||
To run the Programs test, cd into the llvm/test/Programs directory
|
To run the Programs test, cd into the llvm/test/Programs directory and
|
||||||
and type <tt>make</tt>. Alternatively, you can type <tt>make
|
type <tt>make</tt>. Alternatively, you can type <tt>make
|
||||||
TEST=<type> test</tt> to run one of the specialized tests in
|
TEST=<type> test</tt> to run one of the specialized tests in
|
||||||
llvm/test/Programs/TEST.<type>.Makefile. For example, you could run
|
llvm/test/Programs/TEST.<type>.Makefile. For example, you could
|
||||||
the nightly tester tests using the following commands:
|
run the nightly tester tests using the following commands:
|
||||||
<p>
|
</p>
|
||||||
<tt>
|
|
||||||
cd llvm/test/Programs
|
<pre>
|
||||||
<br>
|
% cd llvm/test/Programs
|
||||||
make TEST=nightly test
|
% make TEST=nightly test
|
||||||
</tt>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Regardless of which test you're running, the results are printed on standard
|
Regardless of which test you're running, the results are printed on
|
||||||
output and standard error. You can redirect these results to a file if you
|
standard output and standard error. You can redirect these results to a
|
||||||
choose.
|
file if you choose.
|
||||||
<p>
|
</p><p>
|
||||||
Some tests are known to fail. Some are bugs that we have not fixed yet;
|
Some tests are known to fail. Some are bugs that we have not fixed yet;
|
||||||
others are features that we haven't added yet (or may never add). In QMTest,
|
others are features that we haven't added yet (or may never add). In
|
||||||
the result for such tests will be XFAIL (eXpected FAILure). In this way, you
|
QMTest, the result for such tests will be XFAIL (eXpected FAILure). In
|
||||||
can tell the difference between an expected and unexpected failure.
|
this way, you can tell the difference between an expected and unexpected
|
||||||
<p>
|
failure.
|
||||||
The Programs tests have no such feature as of this time. If the test passes,
|
</p><p>
|
||||||
only warnings and other miscellaneous output will be generated. If a test
|
The Programs tests have no such feature as of this time. If the test
|
||||||
fails, a large <program> FAILED message will be displayed. This will
|
passes, only warnings and other miscellaneous output will be generated.
|
||||||
help you separate benign warnings from actual test failures.
|
If a test fails, a large <program> FAILED message will be
|
||||||
|
displayed. This will help you separate benign warnings from actual test
|
||||||
|
failures.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<hr>
|
<!-- *********************************************************************** -->
|
||||||
|
|
||||||
</body>
|
<hr><font size="-1">
|
||||||
|
<address>John T. Criswell</address>
|
||||||
|
Last modified: $Date$
|
||||||
|
</font>
|
||||||
|
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user