brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · cff8255 Raw
63 lines · plain
1#!/usr/bin/env perl2 3# This tiny little script, which should be run from the clang4# directory (with clang in your patch), tries to take each5# compilable Clang test and build a PCH file from that test, then read6# and dump the contents of the PCH file just created.7use POSIX;8use warnings;9 10$exitcode = 0;11sub testfiles($$) {12  my $suffix = shift;13  my $language = shift;14  my $passed = 0;15  my $failed = 0;16  my $skipped = 0;17 18  @files = `ls test/*/*.$suffix`;19  foreach $file (@files) {20    chomp($file);21    my $code = system("clang -fsyntax-only -x $language $file > /dev/null 2>&1");22    if ($code == 0) {23      print(".");24      $code = system("clang -cc1 -emit-pch -x $language -o $file.pch $file > /dev/null 2>&1");25      if ($code == 0) {26        $code = system("clang -cc1 -include-pch $file.pch -x $language -ast-dump /dev/null > /dev/null 2>&1");27        if ($code == 0) {28          $passed++;29        } elsif (($code & 0xFF) == SIGINT) {30          exit($exitcode);31        } else {32          print("\n---Failed to dump AST file for \"$file\"---\n");33          $exitcode = 1;34          $failed++;35        }36        unlink "$file.pch";37      } elsif (($code & 0xFF) == SIGINT) {38        exit($exitcode);39      } else {40        print("\n---Failed to build PCH file for \"$file\"---\n");41        $exitcode = 1;42          $failed++;43      }44    } elsif (($code & 0xFF) == SIGINT) {45      exit($exitcode);46    } else {47      print("x");48      $skipped++;49    }50  }51 52  print("\n\n$passed tests passed\n");53  print("$failed tests failed\n");54  print("$skipped tests skipped ('x')\n")55}56 57printf("-----Testing precompiled headers for C-----\n");58testfiles("c", "c");59printf("\n-----Testing precompiled headers for Objective-C-----\n");60testfiles("m", "objective-c");61print("\n");62exit($exitcode);63