Home
Порой мне человеческое чуждо. [entries|archive|friends|userinfo]
MaKcNMkA

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

gcc optimize bug found! [Aug. 19th, 2008|12:59 pm]
[Tags|, , ]

Недавно натолкнулся на такую проблему:

У меня есть код, подобный этому:

const char A [] = {0,0,'1','2','3','4','5','6','7','8','9','0',...,0};
const char B [] = {0,0,'!','@','#','$','%','^','&','*','(',')',...,0};
Ещё какие-то константы, массивы и т.д.
...
Какой-то код

Итак, проблема заключалась в том, что при загрузке в память массив B почему-то представлялся в странном виде, проще сказать - затирался ещё каким-то кодом данной программы...

При компиляции я использовал оптимизацию -O3 (компилятор языка C gcc, линковщик ld)...

Короче говоря, убрав флаг -O3 и/или поставив оптимизацию -O2 массив стал копироваться в память нормально...

Этот баг уже давно замечен, наверное (если учесть, что с уровнем -O3 всегда идёт словосочетание во всех манах "на свой страх и риск"), но я обнаружил его только что... Подумал, может будет полезно кому-нибудь.

UPD:


Наверное, это всё таки не так... Наверное, я опять облажался... Не работает! Буду искать ошибку в другом месте...
LinkLeave a comment

navigation
[ viewing | most recent entries ]

Advertisement