From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Virus-Scanned: amavisd-new at localhost Message-ID: <4A7A8375.40306@diyaorg.dp.ua> Date: Thu, 06 Aug 2009 10:17:09 +0300 From: Roman Savochenko User-Agent: Thunderbird 2.0.0.21 (X11/20090430) MIME-Version: 1.0 To: ALT Linux Sisyphus discussions References: <4A79BC9B.20207@diyaorg.dp.ua> <1249508082.10189.23.camel@latitude.localdomain> In-Reply-To: <1249508082.10189.23.camel@latitude.localdomain> Content-Type: multipart/mixed; boundary="------------090708030606060306060209" Subject: Re: [sisyphus] =?utf-8?b?0KHRgtGA0LDQvdC90L7RgdGC0Lgg0L/RgNC4INC/0LU=?= =?utf-8?b?0YDQtdGF0L7QtNC1INC+0LHRitC10LTQuNC90LXQvdC40Lgg0LTQstGD0YUg?= =?utf-8?b?0YbQtdC70YvRhSDQsiDQstC10YnQtdGB0YLQstC10L3QvdC+0LUg0L3QsCB4?= =?utf-8?q?86=5F64?= X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Aug 2009 07:17:27 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------090708030606060306060209 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Alexey Rusakov wrote: >> Имеется некая целевая задачка собрать из двух 16-разрядных целых >> вещественное (float), 32 разряда. >> Казалось-бы тривиальная задача, которая решается кодом типа >> int w1 = 62915, w2 = 16456; >> ui32 vl = ((w2&0xffff)<<16) | w1&0xffff; >> //sleep(1); >> printf("TEST 00: %f\n",*(float*)&vl); >> >> И как ожидалось на x86_32 он работает корректно при различной нагрузке. >> А вот на x86_64 замечается ситуация когда вместо 3.14 получаем ноль. >> Причём в тестовой программке с единственным потоком всё работает >> нормально, а на высоконагруженном процессе с десятками потоков, из >> которых около пяти работают с периодом 5мс. устойчиво получатся 0. >> Если раскомментирую sleep, то получаю номальный результат 3.14. >> >> Кто нибуть может такое поведение объяснить? >> > Объяснить не могу, но поиграйтесь с опциями отладки и оптимизации(-O, > -g) и смотрите объектный код, генерируемый компилятором (-S). > Да действительно, проблема связана с ключом -O2. Сменил на -O1 всё заработало нормально. Багу на компилятор по этому поводу вешать? С уважением, Роман --------------090708030606060306060209 Content-Type: text/x-vcard; charset=utf-8; name="rom_as.vcf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rom_as.vcf" YmVnaW46dmNhcmQNCmZuOlJvbWFuIFNhdm9jaGVua28NCm46U2F2b2NoZW5rbztSb21hbg0K YWRyO2RvbTo7OztEbmVwcm9kemVyamluc2sNCmVtYWlsO2ludGVybmV0OnJvbV9hc0BkaXlh b3JnLmRwLnVhDQp0aXRsZTpOSVAgIkRJWUEiDQp0ZWw7d29yazpOSVAgIkRJWUEiDQp0ZWw7 Y2VsbDorMzgwNjc5ODU5ODE1DQp4LW1vemlsbGEtaHRtbDpGQUxTRQ0KdmVyc2lvbjoyLjEN CmVuZDp2Y2FyZA0KDQo= --------------090708030606060306060209--