Divide by zero / shift by negative amount
param2 = 1 / 0 shouldn't give internal error. Same for modulus operator.
Shift expects a positive right-hand-side.
In short, all operators should be checked for such bugs/issues.
Fix #2457: Do a more thorough validation of binary operands before reducing an expression.