diff --git a/src/libFLAC/fixed.c b/src/libFLAC/fixed.c
index 7ee5ef8..20f8470 100644
--- a/src/libFLAC/fixed.c
+++ b/src/libFLAC/fixed.c
@@ -342,7 +342,12 @@ unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
 	return order;
 }
 
-void FLAC__fixed_compute_residual(const FLAC__int32 data[], unsigned data_len, unsigned order, FLAC__int32 residual[])
+#if defined(_MSC_VER)
+// silence MSVC warnings about __restrict modifier
+#pragma warning ( disable : 4028 )
+#endif
+
+void FLAC__fixed_compute_residual(const FLAC__int32 * flac_restrict data, unsigned data_len, unsigned order, FLAC__int32 * flac_restrict residual)
 {
 	const int idata_len = (int)data_len;
 	int i;
@@ -385,7 +390,7 @@ void FLAC__fixed_compute_residual(const FLAC__int32 data[], unsigned data_len, u
 	}
 }
 
-void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len, unsigned order, FLAC__int32 data[])
+void FLAC__fixed_restore_signal(const FLAC__int32 * flac_restrict residual, unsigned data_len, unsigned order, FLAC__int32 * flac_restrict data)
 {
 	int i, idata_len = (int)data_len;
 
@@ -426,3 +431,7 @@ void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len,
 			FLAC__ASSERT(0);
 	}
 }
+
+#if defined(_MSC_VER)
+#pragma warning ( default : 4028 )
+#endif
diff --git a/src/libFLAC/include/private/fixed.h b/src/libFLAC/include/private/fixed.h
index d1b8a86..1d570b7 100644
--- a/src/libFLAC/include/private/fixed.h
+++ b/src/libFLAC/include/private/fixed.h
@@ -87,7 +87,7 @@ unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
  *	IN order <= FLAC__MAX_FIXED_ORDER fixed-predictor order
  *	OUT residual[0,data_len-1]        residual signal
  */
-void FLAC__fixed_compute_residual(const FLAC__int32 data[], unsigned data_len, unsigned order, FLAC__int32 residual[]);
+void FLAC__fixed_compute_residual(const FLAC__int32 * data, unsigned data_len, unsigned order, FLAC__int32 * residual);
 
 /*
  *	FLAC__fixed_restore_signal()
@@ -102,6 +102,6 @@ void FLAC__fixed_compute_residual(const FLAC__int32 data[], unsigned data_len, u
  *	IN  data[-order,-1]               previously-reconstructed historical samples
  *	OUT data[0,data_len-1]            original signal
  */
-void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len, unsigned order, FLAC__int32 data[]);
+void FLAC__fixed_restore_signal(const FLAC__int32 * residual, unsigned data_len, unsigned order, FLAC__int32 * data);
 
 #endif
