реклама на сайте
подробности

 
 
> Баг EWARM 5.20.3
MALLOY2
сообщение Jan 5 2009, 21:17
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



EWARM 5.20.3 EVAL. Компилирую под STM32 ну это не важно...
Обнаружил баг, прошу проверить.

Баг проявляется при попытке выполнить условие с битовым полем.

Имеем:
Код
typedef struct my_struct_bit_tag
{
  unsigned int bit0:1;
  unsigned int bit1:1;
  unsigned int bit2:1;
  unsigned int bit3:1;
  unsigned int bit4:1;
  unsigned int bit5:1;
  unsigned int bit6:1;
  unsigned int bit7:1;
  unsigned int other:24;
}my_struct_bit_t;

typedef struct my_struct_tag
{
  volatile unsigned int A;
  volatile unsigned int B;
  union {volatile my_struct_bit_t Cbit; volatile unsigned int C;};
}my_struct_t;


Делаем такое условие:
Код
void main(void)
{
  my_struct_t *test;
  ....
  if (test->C){......}
}

Все нормально компилируеться

При таком условии
Код
void main(void)
{
  my_struct_t *test;
  ....
  if (test->Cbit.bit0){......}
}

имеем:
Internal Error: [symbol_lookup_M31]: symbol not found for mode 1 (backend generating) (P0: 0, P1: 0)
P.S. Чтение - запись битовых полей работает нормально.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jan 6 2009, 13:29
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Тупым компилятором. Чтобы потом юзер в рантайме встал на эти грабли. Типа Data Abort. ИАР слишком умный для таких граблей. Если бы Вы хоть чуть умели писать компилеры и понимали методы оптимизации, а не только умели писать такие кривые проги, то не говорили бы что этот код 100% компилируемый.


1. Думаю вы точно не умеете их писать. Если вы умеете читать я писал что компилятор выдает честный варнинг на то что test не инициализирован ! он не имеет права запрещать мне так делать !

2. По поводу кривых прог не вам судить. По вашему я должен был выложить комерческий код сюда у которого больше 1000 строк чтобы показать этот глюк ? а не проще сделать так как я сделал ?

Если кто может послать баг репорт в IAR огромное спасибо, я его посылать не буду так как пишу по буржуйски токо "Привед медвед".

Баг не серьезный и работе никак не мешает, но вот на 2 машине когда попробыл его повторить с подключенным виглером почемуто среда еще повисла, это уже может напрягать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MALLOY2   Баг EWARM 5.20.3   Jan 5 2009, 21:17
- - GetSmart   Разная оптимизация влияет на ошибку? И ещё хотело...   Jan 5 2009, 23:08
- - MALLOY2   Глюк проявляется только при высокой оптимизации и ...   Jan 6 2009, 09:38
- - GetSmart   Цитата(MALLOY2)да нету там ничего test присваивает...   Jan 6 2009, 10:36
- - MALLOY2   Вот вы пристали что там, да нет там ничего вобще ...   Jan 6 2009, 11:13
- - GetSmart   Я за то чтобы в таких случаях компилер ругался и н...   Jan 6 2009, 11:39
|- - Сергей Борщ   Цитата(GetSmart @ Jan 6 2009, 13:39) Я за...   Jan 6 2009, 12:31
- - Rst7   ЦитатаВ этом случае надо отправлять баг-репорт в I...   Jan 6 2009, 12:57
|- - rezident   Цитата(Rst7 @ Jan 6 2009, 17:57) Рекоменд...   Jan 6 2009, 14:15
|- - Сергей Борщ   Цитата(rezident @ Jan 6 2009, 16:15) Фирм...   Jan 6 2009, 14:31
|- - rezident   Цитата(Сергей Борщ @ Jan 6 2009, 19:31) Н...   Jan 6 2009, 15:30
|- - GetSmart   Цитата(MALLOY2 @ Jan 6 2009, 19:29) 1. Ду...   Jan 6 2009, 16:05
- - MALLOY2   ЦитатаЛибо сами создайте минимальный проект с мини...   Jan 6 2009, 21:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 07:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016