LLVM Testing Experience

Dears All ,

I am not a C/C++ programmer and my knowledge about them is very weak .
In my life I did never write a “Makefile” and my knowledge about it is completely zero.

I want to learn Clang and LLVM as much as possible , mostly because I want to write a Pascal front end for LLVM by using Clang compiler parts as much as possible .

For this reason and on message by Tom Stellard

http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-November/078682.html
[LLVMdev] 3.5.1 Release Schedule

“Below is the proposed release schedule for LLVM 3.5.1. As always,
we need testers, so if you are interested in helping with that, let
me know.”

I wanted to download Release 3.5.0 and apply tests on it .

If I can do this I could also apply my experience to release candidates .
With respect to my experiences , a
developer uses an accustomed line of testing and may not cover all of the possibilities
which doing such a coverage is an impossible task . Another person not knowing the system very well may follow a different line and may discover some problems on this different line .
Therefore being ignorant about LLVM system is not so much detrimental for testing .

I had installed in Linux ( Fedora 20 x86_64 ) OS supplied Clang 3.4.10 and LLVM 3.4.10 .
Sometimes I am using Clang to compile small programs alongside with GCC 4.8.3 .
This is especially useful because sometimes one is detecting an error but another one is not .
Therefore during program development , using different compilers on the same program
is an excellent “code review” by a compiler as a “very high quality expert” .

I am sorry about being verbose but I wanted to be explicit as much as possible .

I have downloaded

http://llvm.org/releases/3.5.0/cfe-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/compiler-rt-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/dragonegg-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/libcxx-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/libcxxabi-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/lldb-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/lld-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/polly-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/openmp-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/clang-tools-extra-3.5.0.src.tar.xz
http://llvm.org/releases/3.5.0/test-suite-3.5.0.src.tar.xz

into a directory …/www.llvm.org/3.5.0/ ( where … is the upper directories list ) .

I have decompressed them by using the Ark of KDE into the above directory .

The created directories are as follows :

…/www.llvm.org/3.5.0/cfe-3.5.0-src/
…/www.llvm.org/3.5.0/clang-tools-extra-3.5.0.src/
…/www.llvm.org/3.5.0/compiler-rt-3.5.0.src/
…/www.llvm.org/3.5.0/dragonegg-3.5.0.src/
…/www.llvm.org/3.5.0/libcxx-3.5.0.src/
…/www.llvm.org/3.5.0/libcxxabi-3.5.0.src/
…/www.llvm.org/3.5.0/lld-3.5.0.src/
…/www.llvm.org/3.5.0/lldb-3.5.0.src/
…/www.llvm.org/3.5.0/llvm-3.5.0.src/
…/www.llvm.org/3.5.0/openmp-3.5.0.src/
…/www.llvm.org/3.5.0/polly-3.5.0.src/
…/www.llvm.org/3.5.0/test-suite-3.5.0.src/

Hi,

I think the source of your confusion is that the tarballs are not independent packages with their own build system. This is indirectly explained for subversion and git checkouts (http://llvm.org/docs/GettingStarted.html#getting-started-quickly-a-summary, http://llvm.org/docs/GettingStarted.html#git-mirror) but I couldn’t find documentation that explains this for the release tarballs (http://llvm.org/docs/GettingStarted.html#unpacking-the-llvm-archives in particular doesn’t mention this). I agree that this should be explained.

The script that we use to build the prebuilt binary packages (llvm/utils/release/test-release.sh) creates the following symlinks in the llvm.src and clang.src directories:

cfe.src/tools/extra → …/…/…/…/clang-tools-extra.src

llvm.src/projects/compiler-rt → …/…/compiler-rt.src

llvm.src/projects/libcxx → …/…/libcxx.src

llvm.src/projects/libcxxabi → …/…/libcxxabi.src

llvm.src/projects/test-suite → …/…/test-suite.src

llvm.src/tools/clang → …/…/cfe.src

If you add these symlinks and then run the configure script in llvm.src, then the resulting Makefile should build the packages corresponding to each symlink.