Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

GCC оптимизация

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> GCC оптимизация
Имя
Сообщение << Старые топики   Новые топики >>
GCC оптимизация - 2011-12-03 00:13:50.140000   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
Есть массив char строк, иногда они не используются, но компилятор все равно их добавляет.

Не нашел флага, отвечающего за вырезку не используемых данных.

Такого нет?
Post #: 1
RE: GCC оптимизация - 2011-12-03 00:30:40.953333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Как этот массив объявлен?

Если это глобальная переменная, которая идёт в бинарь в виде global'а, то компилятор с компоновщиком не имеют права её выкидывать: она может нужна для динамических связей – они то не знают, что не нужна. Надо объявить эту переменную с атрибутом static. Если переменная используется в нескольких модулях, то придётся извращаться. Но это по-делу: нефиг иметь глобальные переменные. Чёрт с ними со static'ами, но межмодульные глобалы – это однозначно зло.
Если static-переменная не будет использоваться, возможно gcc начнёт кидать warning'и об этом, по-крайней мере о неиспользуемых static функциях он точно ругается. Ну а дальше, думаю, будет достаточно -O2. Если не будет достаточно, то по-моему, что-то было среди опций оптимизации. Попробуй.

Если же ничего этого нету, то придётся возиться с компоновкой. В этом я не силён, придётся долго-долго втыкать в info ld.
Post #: 2
RE: GCC оптимизация - 2011-12-03 12:21:21.536666   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; const char *LIST = "UNUSINGSHIT"; int main() { return 0; }
Post #: 3
RE: GCC оптимизация - 2011-12-03 12:27:52.236666   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
В этом случае static помогло, но если есть большой массив и функция, которая использует его для своих целей, то добавляй не добавляй static, проблема не решается.

Видимо потому что еще руками надо задать флаг, для удаления мертвого кода, который в свою очередь повлечет удаление массива строк.
Post #: 4
RE: GCC оптимизация - 2011-12-03 13:50:01.220000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Функцию тоже пометь как static. Компилятор можно, я думаю, научить выкидывать неиспользуемые static функции, правда там действительно надо будет порыться в флагах оптимизации. Но если надо выкинуть лишь кусок функции, то это может и не помочь.
Post #: 5
RE: GCC оптимизация - 2011-12-03 17:55:03.563333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
В мсвц точно есть флаг на оптимизацию неиспользуемых строк.
Если пишешь на С++ - то вместо статиков куда правильнее использовать анонимные нэймспейсы.
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> GCC оптимизация







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.