Simple little smoke-test script that tries to build PCH files and then

dump their contents for all of the compilable tests in Clang's
testsuite. All of the tests pass for C, but there are still many
failures for Objective-C.

llvm-svn: 70110
This commit is contained in:
Douglas Gregor 2009-04-26 03:52:11 +00:00
parent 1970d887ab
commit 1d46a1f8a5
1 changed files with 49 additions and 0 deletions

49
clang/utils/pch-test.pl Executable file
View File

@ -0,0 +1,49 @@
#!/usr/bin/perl -w
# This tiny little script, which should be run from the clang
# directory (with clang-cc in your patch), tries to take each
# compilable Clang test and build a PCH file from that test, then read
# and dump the contents of the PCH file just created.
use POSIX;
$exitcode = 0;
sub testfiles($$) {
my $suffix = shift;
my $language = shift;
@files = `ls test/*/*.$suffix`;
foreach $file (@files) {
chomp($file);
print(".");
my $code = system("clang-cc -fsyntax-only -x $language $file > /dev/null 2>&1");
if ($code == 0) {
$code = system("clang-cc -emit-pch -x $language -o $file.pch $file > /dev/null 2>&1");
if ($code == 0) {
$code = system("clang-cc -include-pch $file.pch -x $language -ast-dump-full /dev/null > /dev/null 2>&1");
if ($code == 0) {
} elsif (($code & 0xFF) == SIGINT) {
exit($exitcode);
} else {
print("\n---Failed to dump AST file for \"$file\"---\n");
$exitcode = 1;
}
unlink "$file.pch";
} elsif (($code & 0xFF) == SIGINT) {
exit($exitcode);
} else {
print("\n---Failed to build PCH file for \"$file\"---\n");
$exitcode = 1;
}
} elsif (($code & 0xFF) == SIGINT) {
exit($exitcode);
}
}
}
printf("-----Testing precompiled headers for C-----\n");
testfiles("c", "c");
printf("\n-----Testing precompiled headers for Objective-C-----\n");
testfiles("m", "objective-c");
print("\n");
exit($exitcode);