|  | llvm-diff - LLVM structural 'diff' | 
|  | ================================== | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  |  | 
|  |  | 
|  | **llvm-diff** [*options*] *module 1* *module 2* [*global name ...*] | 
|  |  | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  |  | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **llvm-diff** is intended as a debugging tool for writers of LLVM | 
|  | passes and frontends.  It does not have a stable output format. | 
|  |  | 
|  |  | 
|  | EXIT STATUS | 
|  | ----------- | 
|  |  | 
|  |  | 
|  | If **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. | 
|  |  | 
|  |  | 
|  | 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. |