ASDenysPetrov marked 10 inline comments as done.
ASDenysPetrov added a comment.

@martong Thank you for your patience. I started moving to a bit another 
direction that we can improving it iteratively.
Just spoiling, in my latest solution a single symbol will be associated to many 
classes. Here are also tricky cases:

---

Consider equalities

  a32 == (int8)b32
  b32 == c32

Class-Symbol map is:

  class1 { a32 , (int8)b32 }
  class2 { b32 , c32 }

Symbol-Class map is:

  a32 { 32 : class1 }
  b32 {  8 : class1, 32 : class2  }
  c32 { 32 : class2 }

If we know:

  (int8)c32 == -1

then what is:

  (int8)a32 - ?

Should we traverse like `a ->  32 -> class1 -> (int8)b32 -> b32 ->  class2 -> 
c32 -> (int8)c32 ` ?

---

The `x8 == y32` we can treat as a range of `int8` ( {-128, 127} or  {0, 255} ).

---

For `(int8)x32 == (int16)x32` we can eliminate one of the symbols in the class 
a s a redundant one.

---

If `x32 == 0` then we can simplify(merge) such classes `(int16)x32 == y` and 
`(int8)x32 == z` into a single class. I beleive there are more cases.


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

https://reviews.llvm.org/D103096

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

Reply via email to