Index: webrtc/common_audio/signal_processing/cross_correlation.c |
diff --git a/webrtc/common_audio/signal_processing/cross_correlation.c b/webrtc/common_audio/signal_processing/cross_correlation.c |
index c14ce4c3220a53bb19f8b8530a7fd2d2a8e11ecd..898d934f2739be65ae64207d02db7b57e5af8746 100644 |
--- a/webrtc/common_audio/signal_processing/cross_correlation.c |
+++ b/webrtc/common_audio/signal_processing/cross_correlation.c |
@@ -22,9 +22,11 @@ void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation, |
for (i = 0; i < dim_cross_correlation; i++) { |
int32_t corr = 0; |
- /* Unrolling doesn't seem to improve performance. */ |
+ // Linux 64-bit performance is improved by the int16_t cast below. |
+ // Presumably this is some sort of compiler bug, as there's no obvious |
+ // reason why that should result in better code. |
for (j = 0; j < dim_seq; j++) |
- corr += (seq1[j] * seq2[j]) >> right_shifts; |
+ corr += (seq1[j] * seq2[j]) >> (int16_t)right_shifts; |
seq2 += step_seq2; |
*cross_correlation++ = corr; |
} |