[LLVMdev] Summer of Code

douglas douglas at dcc.ufmg.br
Mon Mar 22 17:35:36 PDT 2010


 Dear John and Nuno,

    well, the analysis that I am working right now is
intra-procedural. It should be more general than SCEV, as it finds ranges
outside the loops. Indeed, it is very similar to Stephenson's original bitwidth
analysis (see Bitwidth Analysis with Application to Silicon Compilation), but it
is only
forward, it does not have the backward pass. Stephenson would assume,
for instance, that when we read an array position, we are inside the
boundaries of the array, and would use this to improve the precision
of his analysis. Of course, he assumes that the program is correct,
and you only read valid array positions. Zhendong does not make this
assumption.
    The analysis is flow sensitive, because it relies on the SSI
framework that Andre Tavares has implemented onto LLVM. And it is sparse, in the
sense that it maps variables, e.g Values, to ranges. So, like Nuno had already
suggested, the interface would give the client a map Value* -> Range. That is
the good thing about using the SSI framework: we do not have to worry about
program points, and can encode information directly into variables, as we
discover them from assignments and the result of conditionals.

Best,




More information about the llvm-dev mailing list