| =pod |
| |
| =head1 NAME |
| |
| llvm-diff - LLVM structural 'diff' |
| |
| =head1 SYNOPSIS |
| |
| B<llvm-diff> [I<options>] I<module 1> I<module 2> [I<global name ...>] |
| |
| =head1 DESCRIPTION |
| |
| B<llvm-diff> compares the structure of two LLVM modules, primarily |
| focusing on differences in function definitions. Insignificant |
| differences, such as changes in the ordering of globals or in the |
| names of local values, are ignored. |
| |
| An input module will be interpreted as an assembly file if its name |
| ends in '.ll'; otherwise it will be read in as a bitcode file. |
| |
| If a list of global names is given, just the values with those names |
| are compared; otherwise, all global values are compared, and |
| diagnostics are produced for globals which only appear in one module |
| or the other. |
| |
| B<llvm-diff> compares two functions by comparing their basic blocks, |
| beginning with the entry blocks. If the terminators seem to match, |
| then the corresponding successors are compared; otherwise they are |
| ignored. This algorithm is very sensitive to changes in control flow, |
| which tend to stop any downstream changes from being detected. |
| |
| B<llvm-diff> is intended as a debugging tool for writers of LLVM |
| passes and frontends. It does not have a stable output format. |
| |
| =head1 EXIT STATUS |
| |
| If B<llvm-diff> finds no differences between the modules, it will exit |
| with 0 and produce no output. Otherwise it will exit with a non-zero |
| value. |
| |
| =head1 BUGS |
| |
| Many important differences, like changes in linkage or function |
| attributes, are not diagnosed. |
| |
| Changes in memory behavior (for example, coalescing loads) can cause |
| massive detected differences in blocks. |
| |
| =head1 AUTHORS |
| |
| Maintained by the LLVM Team (L<http://llvm.org/>). |
| |
| =cut |