
In #149619, for the test of `@dot_follow_modulo_spec_2`, constant folding the addition of two i32 1073741824 causes an overflow from 2^32 to -2^32=-2147483648, which triggers the UB sanitizer. This PR reapplies the previous PR, explicitly casting the addition operand to int64_t first before performing the addition before producing a int32 number via `Constant *C = get(cast<IntegerType>(Ty->getScalarType()), V, isSigned)`