Sema: fix int arithmetic overflow checks

Previously, these checks worked by performing the arithmetic operation,
then checking whether the result fit in the type in question. Since all
values are now typed, this approach was no longer valid, and was
tripping some assertions due to trying to store too-large values in
smaller types.

Now, `intAdd`, `intSub`, `intMul` and `intDiv` all check for overflow,
and if it happens, re-do the operation with the result being a
`comptime_int`, and reporting the error (and vector index) to the caller
so that the error can be reported.

After this change, all test cases are passing.
7702af5eb2mlugg committed on 6/11/2023, 3:51:10 AM· committed by Andrew Kelleyparent2a6b918
2 files changedLine totals unavailable