| gcc optimize bug found! |
[Aug. 19th, 2008|12:59 pm] |
Недавно натолкнулся на такую проблему:
У меня есть код, подобный этому:
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: Наверное, это всё таки не так... Наверное, я опять облажался... Не работает! Буду искать ошибку в другом месте... |
|
|