Currently, if the analyzer evaluates an expression like to - from, it only computes reasonable answer if both are representing ElementRegions.
This patch aims to extends the analyzer to be able to evaluate certain pointer arithmetic operations.
Formally, for all memory region X and for all NonLoc n, m:
Evaluate:
- Element{X,n} - Element{X,m} => n-m
- Element{X,n} - X => n
- X - Element{X,n} => -n
- Element{X,n} == X => true/falsedepending on n is zero or not.
- etc.
Symbolic regions aren't special. Any other parent region should work similarly.