Тут недавно про __no_init проходила тема, что якобы (Аскольд утверждал) с ней размер кода не уменьшится. Вот исследовал это и получил, что уменьшится при условии, что все переменные объявлены как __no_init. Тогда __segment_init из startup-а вообще пропадает.
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)