I've committed some code for parsing DejaGNU log/sum files and doing three-way comparisons to contrib.

dglib.pm is a perl module which implements a "parseLogFile" function. parseLogFile will take a DejaGNU log or sum file and return a detailed parse of the file. Tests will be broken into groups, and multi-phase (compile/link/execute) test results will be combined for instance:
        FAIL: gcc.dg/c-torture/link/20000105-1.c -O0 (test for excess errors)
will become something like:
        gcc.dg
                c-torture
                        compile/link/execute
                                20000105-1.c
                                        -O0 (test for excess errors)
where 20000105-1.c is a test group, which is inside the "compile/link/ execute" test group, which is inside the "c-torture" test group, which is inside the "gcc.dg" test group. "-O0 (test for excess errors)" is the test name. It will have the result "FAIL", and it will have a 'result detail' of "link phase".

It will also associate non-result lines in the log file with their respective results.


compareSumTests3 is a script written on top of this which can do a three-way comparison between DejaGNU .sum (or .log) files. It's designed for doing a merge of branch A into branch B, where you have two "old" compilers (the pre-merge compiler on branch A, 'old1', and the pre-merge compiler on branch B, 'old2') and one "new" compiler (the post-merge compiler.) It will tell you things like "these tests were working in both old compilers but are broken after the merge", or "these tests only worked in old1."

I hope people find them useful. Feel free to contact me with questions, comments, &c.

--
Matthew Sachs <[EMAIL PROTECTED]> [AIM: MattSachs]
Compiler Quality Engineer, Apple Computer

Reply via email to