|
Internal Error: [Post Optimize]: Any exception, почему появляется ошибка? (IAR 4.20) |
|
|
|
Oct 23 2009, 08:54
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Вопрос к спецам: почему появляется ошибка в данном коде на максимальной оптимизации? На всех остальных оптимизациях и без, код нормально компилируется. IAR 4.20. На других не пробовал. Может есть другой вариант описания данной структуры? Но хотелось чтобы поля структуры адресовались из "корня", то есть без лишнего имени структуры. Код typedef union { u32 data; struct { u08 light; u08 red; u08 green; u08 blue; }; } TLIGHT_DATA;
TLIGHT_DATA LightNew, LightOld;
main() { if (LightNew.light <> LightOld.light) ... } Добавлю. Ошибка то появляется, то исчезает когда немного код изменяю. В первой версии был большой код. Здесь я всё сократил до минимума.
Сообщение отредактировал GetSmart - Oct 23 2009, 09:41
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
 |
Ответов
|
Oct 24 2009, 13:10
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
А, ремарки! Это вообще бесполезная вещь, которая не влияет на генерируемый файл. Видел я эту ремарку. Она довольно глупая. Именно из-за неё я догадался почему параноидальные сишники считают что правильнее использовать for (;;) для бесконечных циклов. Я ещё могу понять, когда в дефайне ставят do {} while(0), но проблемы с while (1) выше моего понимания  Бьюсь об заклад, что скорректировав код так, чтобы исчезли все ремарки, прошивка останется 100% идентичной. Следуя такой логике следует запретить конструкции #if 0 ... #endif и им подобные, т.к. аналогично while-у используется константное условие. Хотя и в препроцессоре.
Сообщение отредактировал GetSmart - Oct 24 2009, 13:16
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 24 2009, 13:20
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(GetSmart @ Oct 24 2009, 16:10)  Именно из-за неё я догадался почему параноидальные сишники... Странно, по-русски Вы пишете достаточно грамотно, и наверное, не считаете это извращением. По чему-бы не писать грамотно и на 'C', даже если компилятору кажется, что он Вас понимает и в результате оптимизации выдает хороший код.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 24 2009, 13:26
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Oct 24 2009, 19:20)  Странно, по-русски Вы пишете достаточно грамотно, и наверное, не считаете это извращением. По чему-бы не писать грамотно и на 'C', даже если компилятору кажется, что он Вас понимает и в результате оптимизации выдает хороший код. Ткните меня в стандарт, пожалуйста, где указано, что нельзя использовать константное условие. А иначе - всё, что не запрещено, то - разрешено. А то ведь получится, что и в дефайне ставить while(0) нельзя, и тогда получится "рыба" - без вайла будет ремарка на лишнюю точку с запятой, а с вайлом ремарка на константное условие.
Сообщение отредактировал GetSmart - Oct 24 2009, 13:29
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 24 2009, 13:33
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(GetSmart @ Oct 24 2009, 16:26)  Ткните меня в стандарт, пожалуйста.... Ткните меня в учебник русского языка в котором прямо сказано, что нельзя писать "моя твоя не понимай". Нормальная и абсолютно однозначная запись этого for( ; ; ) без всяких начальных условий, без всяких условий, и без всяких дополнительных действий повторять кусок кода. Цитата А то ведь получится, что и в дефайне ставить while(0) нельзя, и тогда получится "рыба" Неграмотно, но поскольку в данном случае речь идет о трюке, то на то он и трюк, дабы пользоваться им в крайних случаях и со знанием дела.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
GetSmart Internal Error: [Post Optimize]: Any exception Oct 23 2009, 08:54 Палыч Цитата(GetSmart @ Oct 23 2009, 11:54) Код... Oct 23 2009, 11:00 GetSmart Цитата(Палыч @ Oct 23 2009, 17:00) В опер... Oct 23 2009, 11:12 rezident IAR EWARM 5.40.1 на последний пример не дает ошибо... Oct 23 2009, 12:52 zltigo Цитата(GetSmart @ Oct 23 2009, 11:54) поч... Oct 23 2009, 13:10 GetSmart Цитата(zltigo @ Oct 23 2009, 19:10) Да ка... Oct 23 2009, 21:57  zltigo Цитата(GetSmart @ Oct 24 2009, 00:57) без... Oct 23 2009, 22:23 rezident Еще раз подтверждаю, что в IAR EWARM 5.40.1 никаки... Oct 23 2009, 22:23 GetSmart Что я буду делать с 5-ой версией версией компилера... Oct 23 2009, 23:11 zltigo Цитата(GetSmart @ Oct 24 2009, 02:11) Вер... Oct 24 2009, 10:55  GetSmart Цитата(zltigo @ Oct 24 2009, 16:55) Как В... Oct 24 2009, 11:57   zltigo Цитата(GetSmart @ Oct 24 2009, 14:57) Уже... Oct 24 2009, 12:02 rezident Установил 4.20a и 4.30a. Файл из сообщения №6. Tar... Oct 23 2009, 23:38 GetSmart Что то я в процессе кастрации не заметил когда оши... Oct 24 2009, 00:09 rezident Может я что-то не то делаю, но в 4.20 ошибка почти... Oct 24 2009, 01:22 GetSmart Да, странно. У меня в директории IAR4.30 лежит ком... Oct 24 2009, 02:16 GetSmart Приехали. Взял первый попавшийся большой проджект,... Oct 24 2009, 12:29 zltigo Цитата(GetSmart @ Oct 24 2009, 15:29) При... Oct 24 2009, 12:36 GetSmart Провёл эксперимент. В чистом 4.20 всё работает (ср... Oct 24 2009, 12:49 zltigo Цитата(GetSmart @ Oct 24 2009, 15:49) Вар... Oct 24 2009, 12:57  GetSmart Цитата(zltigo @ Oct 24 2009, 18:57) Не ве... Oct 24 2009, 12:59   zltigo Цитата(GetSmart @ Oct 24 2009, 15:59) Не ... Oct 24 2009, 13:05  GetSmart Цитата(zltigo @ Oct 24 2009, 19:20) Стран... Oct 24 2009, 14:58   zltigo Цитата(GetSmart @ Oct 24 2009, 17:58) zlt... Oct 24 2009, 15:52    GetSmart Цитата(zltigo @ Oct 24 2009, 21:52) Тем н... Oct 26 2009, 11:13     zltigo ЦитатаСписок исправленных-внесенных ошибок IAR вед... Oct 26 2009, 11:25      GetSmart Цитата(zltigo @ Oct 26 2009, 17:25) Так в... Oct 26 2009, 12:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|