]> granicus.if.org Git - clang/commitdiff
Simple little smoke-test script that tries to build PCH files and then
authorDouglas Gregor <dgregor@apple.com>
Sun, 26 Apr 2009 03:52:11 +0000 (03:52 +0000)
committerDouglas Gregor <dgregor@apple.com>
Sun, 26 Apr 2009 03:52:11 +0000 (03:52 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70110 91177308-0d34-0410-b5e6-96231b3b80d8

utils/pch-test.pl [new file with mode: 0755]

diff --git a/utils/pch-test.pl b/utils/pch-test.pl
new file mode 100755 (executable)
index 0000000..4d7634b
--- /dev/null
@@ -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);