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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits