craig.topper added inline comments.
================ Comment at: clang/lib/AST/ExprConstant.cpp:2915 case BO_EQ: - Result = (LHSValue == RHSValue); + Result = -(LHSValue == RHSValue); break; ---------------- erichkeane wrote: > efriedma wrote: > > Using "operator=" to assign an int to an APInt is going to lead to > > weird/confusing results. For example, I think this produces the wrong > > result if you have an int128_t vector. > Can you clarify your comment? The result type of one of these compare-ops is > either an i8 or an i32 I think, so I would expect it to 'just work', right? > > What problem of operator= on an APInt gives the wrong result? I guess I've > never seen/don't know how to repro what you mean. > > I DID try to get a test wtih a 'compare op' on an __int128 vector, but that > ends up asserting in GetSignedVectorType Don't compare ops produce a result with the same number of bits as the input? If the compare is a vector of int128 the result should also be a vector of int128. APInt::operator= takes a uint64_t as input and will zero extend it to 128 bits. I think we want to sign extend here. I assume the APInt for result already been given its bit width before this call? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D115670/new/ https://reviews.llvm.org/D115670 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits