Собрал Qt 4.5.2 на мингве 4.4.0 с опциями оптимизации
QMAKE_CFLAGS_RELEASE = -O3 -march=pentium3 -mtune=pentium3
Собралось без проблем, но при запуске ассистента и примеров вылетает на инструкциях такого вида:
movaps %xmm0,-0x38(%ebp)
Вылет происходит из за обращения с памяти не выровненной нужным образом.
Причём в коде функций, куда попадают эти инструкции работы с плавоющей точкой нет.
Подобный эффект наблюдается и для
dybase собранного с такими же ключами.
Воспроизвести пока не удаётся.
Мне кажется лажает кодогенератор. Причём похоже проявляется это для кода собираемого в dll-ку...
Запостил багу мингве:
#2834786 — требуют минимального теста.
Может у кого-нибудь есть какие-то соображения как это отловить?
П.С. Было небольшое обсуждение на
prog.org-е и в рассылке мингвы — пока ни к чему не пришли.
П.П.С. При пересборке с флагами
QMAKE_CFLAGS_RELEASE = -O2 -march=pentium3 -mtune=pentium3
Всё работает.
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
05.09.09 00:41: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Здравствуйте, Tonal-, Вы писали:
T>Собрал Qt 4.5.2 на мингве 4.4.0 с опциями оптимизации
T>T>QMAKE_CFLAGS_RELEASE = -O3 -march=pentium3 -mtune=pentium3
T>
T>Собралось без проблем, но при запуске ассистента и примеров вылетает на инструкциях такого вида:
T>T>movaps %xmm0,-0x38(%ebp)
T>
T>Вылет происходит из за обращения с памяти не выровненной нужным образом.
T>Причём в коде функций, куда попадают эти инструкции работы с плавоющей точкой нет.
T>Подобный эффект наблюдается и для dybase собранного с такими же ключами.
T>Воспроизвести пока не удаётся.
T>Мне кажется лажает кодогенератор. Причём похоже проявляется это для кода собираемого в dll-ку...
а если что взять и ручками собрать один какой-либо файл из исходников QT в котором происходит лажа?
т.е. для начала добавить в ключи -ggdb, выяснить в какой функции падение, и какие ей аргументы передаются
потом copy-paste этой функции в пустой проект , добавление необходимых объявлений и вызов ее с нужными параметрами?
Здравствуйте, Tonal-, Вы писали:
T>Собрал Qt 4.5.2 на мингве 4.4.0 с опциями оптимизации
T>T>QMAKE_CFLAGS_RELEASE = -O3 -march=pentium3 -mtune=pentium3
T>
T>Собралось без проблем, но при запуске ассистента и примеров вылетает на инструкциях такого вида:
доверье компилятору выбирать под какой камень генерить инструкции...
начиная с версии 4.2.х у gcc появился ключик для автоматического определения процессора:
-march=native
а -mtune давно уже лишний ключик...
думал что на Х86 только на производительность влияет Здесь
http://www.ixbt.com/cpu/sse3.shtml вообще про выравнивание 32 байта пишут. SSE и П3 это нонсенс, если нужно П3 может явно SSE запретить?
Здравствуйте, Programador, Вы писали:
P>думал что на Х86 только на производительность влияет Здесь http://www.ixbt.com/cpu/sse3.shtml вообще про выравнивание 32 байта пишут. SSE и П3 это нонсенс, если нужно П3 может явно SSE запретить?
При явном запрете всё работает (-mno-sse).
Всё-таки лажает кодогенератор при включенном sse.
Хотя, похоже это проявляется только для виндовых dll-ек,
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Здравствуйте, Tonal-, Вы писали:
T>Всё-таки лажает кодогенератор при включенном sse.
Может это не баг а фича?
поддержка какогото будущего процессора
T>Хотя, похоже это проявляется только для виндовых dll-ек,
есть в гугле такая тема alignment+dll Вот например нашел
http://www.gamedev.net/community/forums/topic.asp?topic_id=482230
Здравствуйте, Programador, Вы писали:
T>>Всё-таки лажает кодогенератор при включенном sse.
P>Может это не баг а фича? поддержка какогото будущего процессора
Тем не менее, падать не должно.
T>>Хотя, похоже это проявляется только для виндовых dll-ек,
P>есть в гугле такая тема alignment+dll Вот например нашел http://www.gamedev.net/community/forums/topic.asp?topic_id=482230
Ага, похоже. Там ешё несколько подобных ссылок есть.
Мой случай отличается тем, что в исходниках нет вычислений с плавающей точкой — компилятор вставляет эти инструкции похоже посто для оптимизации.
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>