Summer of Code

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
   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.