int y = -2147483648;
int z = unchecked(y / -1);
The second line causes an OverflowException. Shouldn\'t unchecked prevent
Section 7.72 (Division Operator) of the C# 4 specs states:
If the left operand is the smallest representable int or long value and the right operand is –1, an overflow occurs. In a checked context, [...]. In an unchecked context, it is implementation-defined as to whether a System.ArithmeticException (or a subclass thereof) is thrown or the overflow goes unreported with the resulting value being that of the left operand.
So the fact that this throws an exception in an unchecked context is not in fact a bug, since the behavior is implementation-defined.