|
IAR 6.4 Optimization Bug, изменение работы алгоритма при включении оптимизации |
|
|
|
Oct 3 2012, 05:50
|
Местный
  
Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659

|
Здравствуйте. Была в проекте написана простая функция преобразования числа uint32 в строку, без оптимизации работает, при включении Optimization/High/Speed и наличии опции Function Inlining вместо всего числа в строку заносит только последнюю цифру. Функцию конечно поправил так чтоб работала и при оптимизации но как то все равно неприятно, где еще ждать косяков. сам код: CODE // ///8************************************************* // перевод числа i в строку символов в buf длиной = maxlen uint32_t Int2Str(uint32_t i,uint8_t *buf,uint32_t maxlen){ uint32_t j; uint32_t k,l; uint32_t idx;
idx=0; // используется только для преобразования даты if((i<10000)&&(maxlen)&&(maxlen<=4)){ for(j=(maxlen-1);j;j--){ buf[idx]='0'; k=Pow10(j); for(l=9;l;l--){ if(i>=k){ i-=k; buf[idx]++; }else l=1; // выход из цикла } idx++; } buf[idx]='0'+i; idx++; } // buf[idx]=0; return idx; }
///8************************************************* uint32_t Pow10(uint32_t p){// возвращает 10^p uint32_t ret=1; if(p>8)ret=0; else{ for(;p;p--)ret*=10; } return ret; }
Отдельный проект с этими функциями в IAR:
iarbug.rar ( 15.32 килобайт )
Кол-во скачиваний: 76Было обнаружено на STM32F103, проверено наличие бага и для LPC2378 Спасибо.
|
|
|
|
Сообщений в этой теме
Sagittarius IAR 6.4 Optimization Bug Oct 3 2012, 05:50 Lotor Что Вы хотели донести до общественности? Правильне... Oct 3 2012, 06:01 Sagittarius Цитата(Lotor @ Oct 3 2012, 10:01) Что Вы ... Oct 3 2012, 06:17  Lotor Цитата(Sagittarius @ Oct 3 2012, 10:17) 1... Oct 3 2012, 06:50 VslavX Цитата(Sagittarius @ Oct 3 2012, 08:50) Б... Oct 3 2012, 06:55 Sagittarius Цитата(VslavX @ Oct 3 2012, 10:55) Вы мен... Oct 3 2012, 07:43  Lotor Цитата(Sagittarius @ Oct 3 2012, 11:43) э... Oct 3 2012, 08:31  VslavX Цитата(Sagittarius @ Oct 3 2012, 10:43) Р... Oct 3 2012, 09:01 scifi Кстати, и мне интересно. Без доказательств всё это... Oct 3 2012, 10:14 Sagittarius в архиве проект под IAR, оптимизация включена. Зап... Oct 3 2012, 11:21 KRS Так вы бы листинг и привели с указанием ошибки... Oct 3 2012, 11:44 scifi Может быть, кому-то захочется покопаться:
Исходник... Oct 3 2012, 11:47 KRS Видно что
buf[idx]++;
компилятор выкинул
Кстати е... Oct 3 2012, 12:30 chernenko Может я не то что-то делаю, но у меня на 6.10 (дру... Oct 3 2012, 12:40 KRS так писали про 6.4
у меня
IAR ANSI C/C++ Compiler... Oct 3 2012, 12:52 chernenko Цитата(KRS @ Oct 3 2012, 16:52) так писал... Oct 3 2012, 13:03 Lotor Таки глюк компилятора...
PS: Как действовать авто... Oct 3 2012, 13:42 KRS а новый компилер 6.40.4 (кажется) кто нибудь испол... Oct 3 2012, 14:21 Sagittarius Цитата(KRS @ Oct 3 2012, 17:21) а новый к... Oct 4 2012, 07:24 KRS Глючат именно циклы с предусловием (и не только ци... Oct 4 2012, 07:29 VslavX Версия 5.41 - генерирует нормально. Мда, никак оно... Oct 4 2012, 07:38 grisha_scorpion Используйте квалификатор volatile. И будет вам сча... Oct 10 2012, 07:33 Сергей Борщ QUOTE (grisha_scorpion @ Oct 10 2012, 10... Oct 10 2012, 08:04  grisha_scorpion Цитата(Сергей Борщ @ Oct 10 2012, 12:04) ... Oct 10 2012, 10:58   scifi Цитата(grisha_scorpion @ Oct 10 2012, 14... Oct 10 2012, 11:09   Сергей Борщ QUOTE (grisha_scorpion @ Oct 10 2012, 13... Oct 10 2012, 12:55 KRS кстати с volatile тоже не все в порядке!
при ц... Oct 10 2012, 18:45 scifi Цитата(KRS @ Oct 10 2012, 22:45) кстати с... Oct 10 2012, 19:26 MrAlex а что уже можно тип не указывать? только unsigned? Oct 11 2012, 08:35 scifi Цитата(MrAlex @ Oct 11 2012, 12:35) а что... Oct 11 2012, 08:47 KRS В новом IAR 6.40.5
компилятор
IAR ANSI C/C++ Compi... Oct 15 2012, 10:44 Andy Mozzhevilov Цитата(KRS @ Oct 15 2012, 14:44) В новом ... Oct 15 2012, 10:51  KRS Цитата(Andy Mozzhevilov @ Oct 15 2012, 14... Oct 15 2012, 13:18   ig_z QUOTE (KRS @ Oct 15 2012, 16:18) ЕМНИП ра... Oct 15 2012, 13:31    Dog Pawlowa Цитата(ig_z @ Oct 15 2012, 16:31) Не знаю... Oct 17 2012, 06:51     jcxz Если кто отправлять будет, то напишите до кучи и п... Oct 19 2012, 04:59      Andy Mozzhevilov Цитата(jcxz @ Oct 19 2012, 08:59) Если кт... Oct 19 2012, 05:14       jcxz Цитата(Andy Mozzhevilov @ Oct 19 2012, 11... Oct 19 2012, 06:43        IgorKossak Цитата(jcxz @ Oct 19 2012, 09:43) Если бы... Oct 19 2012, 07:31         jcxz При дальнейшем уменьшении проблемной функции, баг ... Oct 19 2012, 12:21      Sagittarius Цитата(jcxz @ Oct 19 2012, 08:59) ЗЫ: Про... Oct 22 2012, 06:21 Andy Mozzhevilov Я достаточно давно ловил баг еще в какой-то 4-й ве... Oct 15 2012, 16:03 KRS Про бак IAR так и не узнал, по крайней мере в
V6.... Nov 13 2012, 06:30 Nixon А в новой, 6.50.2 версии он не вылечен? Dec 24 2012, 14:19 KRS Цитата(Nixon @ Dec 24 2012, 18:19) А в но... Dec 24 2012, 18:48 MK2 Еще один возможно прикол версии 6.4
Кодstatic clas... Jan 30 2013, 10:07 Сергей Борщ QUOTE (MK2 @ Jan 30 2013, 12:07) подобное... Jan 30 2013, 10:19  MK2 Цитата(Сергей Борщ @ Jan 30 2013, 13:19) ... Jan 30 2013, 11:45   zhz В версии 6.50.5 баг с оптимизацией вроде бы исправ... Apr 17 2013, 23:48    jcxz Цитата(zhz @ Apr 18 2013, 05:48) В версии... Apr 18 2013, 01:42     jcxz И точно!!! Мой баг исправили, о котор... Apr 18 2013, 04:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|