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