diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-12-03 18:40:58 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-12-03 18:40:58 +0000 |
commit | bdd9669310c6d8486d7c6e8e3bd9bd984144962c (patch) | |
tree | 059c57a67fca14118ee58275b10600f8c4a5ccdd /clang/utils/TestUtils | |
parent | c99f1553652aa099c26e1c7695b59aeeb18c54c5 (diff) | |
download | bcm5719-llvm-bdd9669310c6d8486d7c6e8e3bd9bd984144962c.tar.gz bcm5719-llvm-bdd9669310c6d8486d7c6e8e3bd9bd984144962c.zip |
Add utils/TestUtils, and sink pch-test.pl there.
Also, add a test for generator a C file with a very deep call stack.
llvm-svn: 90468
Diffstat (limited to 'clang/utils/TestUtils')
-rwxr-xr-x | clang/utils/TestUtils/deep-stack.py | 24 | ||||
-rwxr-xr-x | clang/utils/TestUtils/pch-test.pl | 61 |
2 files changed, 85 insertions, 0 deletions
diff --git a/clang/utils/TestUtils/deep-stack.py b/clang/utils/TestUtils/deep-stack.py new file mode 100755 index 00000000000..1750a5fca03 --- /dev/null +++ b/clang/utils/TestUtils/deep-stack.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python + +def pcall(f, N): + if N == 0: + print >>f, ' f(0)' + return + + print >>f, ' f(' + pcall(f, N - 1) + print >>f, ' )' + +def main(): + f = open('t.c','w') + print >>f, 'int f(int n) { return n; }' + print >>f, 'int t() {' + print >>f, ' return' + pcall(f, 10000) + print >>f, ' ;' + print >>f, '}' + +if __name__ == "__main__": + import sys + sys.setrecursionlimit(100000) + main() diff --git a/clang/utils/TestUtils/pch-test.pl b/clang/utils/TestUtils/pch-test.pl new file mode 100755 index 00000000000..2e17117a2a2 --- /dev/null +++ b/clang/utils/TestUtils/pch-test.pl @@ -0,0 +1,61 @@ +#!/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; + my $passed = 0; + my $failed = 0; + my $skipped = 0; + + @files = `ls test/*/*.$suffix`; + foreach $file (@files) { + chomp($file); + my $code = system("clang-cc -fsyntax-only -x $language $file > /dev/null 2>&1"); + if ($code == 0) { + print("."); + $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 /dev/null > /dev/null 2>&1"); + if ($code == 0) { + $passed++; + } elsif (($code & 0xFF) == SIGINT) { + exit($exitcode); + } else { + print("\n---Failed to dump AST file for \"$file\"---\n"); + $exitcode = 1; + $failed++; + } + unlink "$file.pch"; + } elsif (($code & 0xFF) == SIGINT) { + exit($exitcode); + } else { + print("\n---Failed to build PCH file for \"$file\"---\n"); + $exitcode = 1; + $failed++; + } + } elsif (($code & 0xFF) == SIGINT) { + exit($exitcode); + } else { + print("x"); + $skipped++; + } + } + + print("\n\n$passed tests passed\n"); + print("$failed tests failed\n"); + print("$skipped tests skipped ('x')\n") +} + +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); |