LGTM On 2 June 2015 at 08:58, Russell Gallop <[email protected]> wrote:
> Hi rafael, > > This revision has a couple of small changes to make check_cfc.py made so > it works better with build systems. > > gcc/clang options which output dependency files instead of object files > (e.g. -M, -MM) are identified and checks are not performed in these cases. > > When reporting a check failure, the input file name is reported which can > help to identify where the problem was in large build logs, particularly > with parallel builds. > > Please let me know if okay to commit? > > http://reviews.llvm.org/D10183 > > Files: > utils/check_cfc/check_cfc.py > utils/check_cfc/test_check_cfc.py > > Index: utils/check_cfc/check_cfc.py > =================================================================== > --- utils/check_cfc/check_cfc.py > +++ utils/check_cfc/check_cfc.py > @@ -213,16 +213,18 @@ > > def is_normal_compile(args): > """Check if this is a normal compile which will output an object file > rather > - than a preprocess or link.""" > + than a preprocess or link. args is a list of command line > arguments.""" > compile_step = '-c' in args > # Bitcode cannot be disassembled in the same way > bitcode = '-flto' in args or '-emit-llvm' in args > # Version and help are queries of the compiler and override -c if > specified > query = '--version' in args or '--help' in args > + # Options to output dependency files for make > + dependency = '-M' in args or '-MM' in args > # Check if the input is recognised as a source file (this may be too > # strong a restriction) > input_is_valid = bool(get_input_file(args)) > - return compile_step and not bitcode and not query and input_is_valid > + return compile_step and not bitcode and not query and not dependency > and input_is_valid > > def run_step(command, my_env, error_on_failure): > """Runs a step of the compilation. Reports failure as exception.""" > @@ -367,7 +369,7 @@ > checker.perform_check(arguments_a, my_env) > except WrapperCheckException as e: > # Check failure > - print(e.msg, file=sys.stderr) > + print("{} {}".format(get_input_file(arguments_a), e.msg), > file=sys.stderr) > > # Remove file to comply with build system expectations (no > # output file if failed) > Index: utils/check_cfc/test_check_cfc.py > =================================================================== > --- utils/check_cfc/test_check_cfc.py > +++ utils/check_cfc/test_check_cfc.py > @@ -103,6 +103,16 @@ > check_cfc.is_normal_compile(['clang', '-c', 'test.cpp', > '--version'])) > self.assertFalse( > check_cfc.is_normal_compile(['clang', '-c', 'test.cpp', > '--help'])) > + # Outputting dependency files is not a normal compile > + self.assertFalse( > + check_cfc.is_normal_compile(['clang', '-c', '-M', > 'test.cpp'])) > + self.assertFalse( > + check_cfc.is_normal_compile(['clang', '-c', '-MM', > 'test.cpp'])) > + # Creating a dependency file as a side effect still outputs an > object file > + self.assertTrue( > + check_cfc.is_normal_compile(['clang', '-c', '-MD', > 'test.cpp'])) > + self.assertTrue( > + check_cfc.is_normal_compile(['clang', '-c', '-MMD', > 'test.cpp'])) > > def test_replace_output_file(self): > self.assertEqual(check_cfc.replace_output_file( > > EMAIL PREFERENCES > http://reviews.llvm.org/settings/panel/emailpreferences/ >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
