libFLAC/bitwriter.c: Fix undefined behaviour

Improve folding of signed to unsgned to avoid UB.
diff --git a/src/libFLAC/bitwriter.c b/src/libFLAC/bitwriter.c
index 76be1bc..dcdd93e 100644
--- a/src/libFLAC/bitwriter.c
+++ b/src/libFLAC/bitwriter.c
@@ -520,7 +520,9 @@
 
 	while(nvals) {
 		/* fold signed to unsigned; actual formula is: negative(v)? -2v-1 : 2v */
-		uval = (*vals<<1) ^ (*vals>>31);
+		uval = *vals;
+		uval <<= 1;
+		uval ^= (*vals>>31);
 
 		msbits = uval >> parameter;