nrsh1 is written before tmp321 is read, so needs to be earlyclobber

Otherwise, the compiler is allowed to put them in the same register
under the assumption that all inputs are read before any
(non-earlyclobber) output is written, which in this case would result
in nrsh2 being corrupted.

BUG=3439
R=aluebs@webrtc.org, ljubomir.papuga@gmail.com

Review URL: https://webrtc-codereview.appspot.com/16089004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6700 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kwiberg@webrtc.org 2014-07-16 08:26:48 +00:00
parent 38ce7d03d8
commit e8ea33ccb1

View File

@ -1485,7 +1485,7 @@ static void ComfortNoise(AecmCore_t* aecm,
"mul %[tmp321], %[tmp321], %[tmp161] \n\t" "mul %[tmp321], %[tmp321], %[tmp161] \n\t"
"sra %[nrsh1], %[tmp32], 14 \n\t" "sra %[nrsh1], %[tmp32], 14 \n\t"
"sra %[nrsh2], %[tmp321], 14 \n\t" "sra %[nrsh2], %[tmp321], 14 \n\t"
: [nrsh1] "=r" (nrsh1), [nrsh2] "=r" (nrsh2) : [nrsh1] "=&r" (nrsh1), [nrsh2] "=r" (nrsh2)
: [tmp16] "r" (tmp16), [tmp161] "r" (tmp161), [tmp32] "r" (tmp32), : [tmp16] "r" (tmp16), [tmp161] "r" (tmp161), [tmp32] "r" (tmp32),
[tmp321] "r" (tmp321) [tmp321] "r" (tmp321)
: "memory", "hi", "lo" : "memory", "hi", "lo"