Re: Вопрос по msp430-gcc
так посмотри )
Есть такая вещь как "global program optimization", то есть когда компилятор на руках имеет весь код программы (здесь важно, что он знает, что это _весь_ код то он может делать такие оптимизации, которые не может себе позволить, компилируя лишь часть программы. А оптимизации бывают не только на скорость, но и на размер.

недавно как раз появилась новая версия, делает почти в полтора раза более компактный код чем предыдущая...
[off]
Что касается межпроцедурных оптимизаций, то в gcc их нет. Причина этого - политическая позиция FSF. Работа над ними ведется в отдельной ветке. Но, есть режим компиляции unit-at-a-time, включающийся начиная с O2, в котором делается межпроцедурный (в пределах одного файла) инлайнинг.
[/off]
Оставить комментарий
Defolt1
Скомпилировал приложение с начала целиком, а потом отдельно его же, но разбив на 2 части, компилявшиеся отдельно.Результат превзошёл все ожидания - исполняемый файл во втором случае был больше в 4 (!) раза (54К и 214К соответственно).
Потом, заподозрив неладное, попробовал это же приложение скомпилять сразу в исполняемый, и его же, но вручную в 2 стадии:
1. msp430-gcc -c file.c
2. ld file.o
Итог ровно тот же. Даже если перед линковкой сделать msp430-strip -x --strip-debug --strip-unneeded, всё равно не катит, получается 77К. А допустимый максимум - 55К.
Что за фигня происходит при ручной линковке? Может, компилятор втихаря какие-то хитрые ключи передаёт линкеру, о которых я не подозреваю?