[llvm-dev] Hash of a module

Russell Wallace via llvm-dev llvm-dev at lists.llvm.org
Sun Dec 20 16:05:15 PST 2015


Thanks! The code to create a copy of a module is just what I needed; having
done that, I've written my own code to compare modules for approximate
equality, since I realized for my purposes, a fast, coarse-grained
comparison suffices (since coarse-grained changes are the most likely to
create further optimization opportunities).

On Sun, Dec 20, 2015 at 2:29 PM, Manuel Jacob <me at manueljacob.de> wrote:

> Hi Russell,
>
> please take a look at the file lib/Transforms/IPO/MergeFunctions.cpp.  It
> implements comparison and hashing of functions.  You can probably reuse
> some of it's code and extend the approach to modules.  Alternatively,  you
> could try to use code from tools/llvm-diff/ (DifferenceEngine.cpp in
> particular).  They both implement similar functionality, one might be
> better suited for your particular use case.
>
> There is code to create a copy of a module in
> lib/Transforms/Utils/CloneModule.cpp.
>
> -Manuel
>
>
> On 2015-12-20 13:43, Russell Wallace via llvm-dev wrote:
>
>> I want to run a bunch of optimizations, iteratively, that is keep running
>> until things stop changing (to make sure all optimization opportunities
>> are
>> taken). As far as I know, there is no way to copy a module or compare
>> modules by value, so it occurs to me that a practical solution might be to
>> take the hash code of the module and see if that changes.
>>
>> A problem is that hash algorithms are designed to work on streams of
>> bytes,
>> not compound objects.
>>
>> First attempt at a solution: iterate through all instructions in all
>> functions and hash the instruction kinds. I can think of some possible
>> changes that would fail to be captured by that.
>>
>> Is there any already known solution?
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151221/08610dba/attachment.html>


More information about the llvm-dev mailing list