From ff137edc5321c8e8de01ccfcd873ca13d3d4b01c Mon Sep 17 00:00:00 2001 From: "kma@webrtc.org" Date: Tue, 30 Oct 2012 01:19:42 +0000 Subject: [PATCH] Work around with issue 971 (signal_processing_unittests fails memcheck when compiled with GCC 4.6). Review URL: https://webrtc-codereview.appspot.com/935008 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3017 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../signal_processing/include/spl_inl.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/webrtc/common_audio/signal_processing/include/spl_inl.h b/webrtc/common_audio/signal_processing/include/spl_inl.h index 1cde181b97..622b5f7fa3 100644 --- a/webrtc/common_audio/signal_processing/include/spl_inl.h +++ b/webrtc/common_audio/signal_processing/include/spl_inl.h @@ -60,7 +60,12 @@ static __inline WebRtc_Word16 WebRtcSpl_GetSizeInBits(WebRtc_UWord32 n) { static __inline int WebRtcSpl_NormW32(WebRtc_Word32 a) { int zeros; - if (a <= 0) a ^= 0xFFFFFFFF; + if (a == 0) { + return 0; + } + else if (a < 0) { + a = ~a; + } if (!(0xFFFF8000 & a)) { zeros = 16; @@ -96,7 +101,12 @@ static __inline int WebRtcSpl_NormU32(WebRtc_UWord32 a) { static __inline int WebRtcSpl_NormW16(WebRtc_Word16 a) { int zeros; - if (a <= 0) a ^= 0xFFFF; + if (a == 0) { + return 0; + } + else if (a < 0) { + a = ~a; + } if (!(0xFF80 & a)) { zeros = 8;