baloghadamsoftware added a comment.

My original idea was that once we ony store either A - B or B - A. Thus if we 
already have A - B stored then do not store range for B - A but negate both the 
difference and the range. I can think on two ways to implement this:

1. Create a separate function e.g. `setRange()` to store the range. This 
function checks whether the symbol is a difference and whether we already have 
a range for its negated. If so, then negate the difference and the range as 
well. ( We do not need to intersect them because the caller already did it.) 
However, in this case we negate twice: once in `getRange()` then once in 
`setRange()`.

2. Move the negation out of `getRange()` and call check for a stored negated 
difference before calling it. If it exist then call the appropriate assume 
function for the negated difference (for `==` and `!=` it is the same function, 
but reverse the operator for the rest).

Your idea (store either `A - B` or `B - A` based on their symbol ID is also 
feasible but then we also face the same question. So 1) or 2)?


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55007/new/

https://reviews.llvm.org/D55007



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to