================ @@ -1261,6 +1261,28 @@ class CFGBuilder { L2Result.Val.getKind() == APValue::Float) { llvm::APFloat L1 = L1Result.Val.getFloat(); llvm::APFloat L2 = L2Result.Val.getFloat(); + // Note that L1 and L2 do not necessarily have the same type. For example + // `x != 0 || x != 1.0`, if `x` is a float16, the two literals `0` and + // `1.0` are float16 and double respectively. In this case, we should do + // a conversion before comparing L1 and L2. Their types must be + // compatible since they are comparing with the same DRE. + int8_t Order = Context->getFloatingTypeOrder(NumExpr1->getType(), ---------------- yronglin wrote:
```suggestion int Order = Context->getFloatingTypeSemanticOrder(NumExpr1->getType(), ``` Why we use int8_t here? the return type of `getFloatingTypeOrder` is int. https://github.com/llvm/llvm-project/pull/142897 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits