Fix cases where the most negative signed integer was negated, causing undefined behavior. (upstream git commit 1b32e3e869059e437c43ba0f8765c3e5857801f7) Tests: fix undefined behavior from a left shift of a negative value. (upstream git commit 22ec823cc707f38ee465805cfb158879e56758a3)