我受嵌入式PowerPC系统的128Kb极限可执行文件大小的约束。不幸的是,由于我相信是编译器错误(使用-Os
链接由于未定义对-Os
的引用而失败),因此无法使用选项_restgpr_30_x
进行大小优化。这是与gcc 4.8.1 host = i86,target = powerpc-wrs-vxworks一起使用的。
我的下一个想法是有选择地使用各种优化选项。但是,这些选项中的哪一个将减少代码大小而不是执行时间?我继续孤立地使用了一些选项,并发现-O2以及
-fno-caller-saves
-fno-cse-follow-jumps
-fno-hoist-adjacent-loads
-fno-inline-small-functions
-fno-optimize-sibling-calls
-fno-peephole2
-fno-reorder-functions
-fno-rerun-cse-after-loop
-fno-tree-vrp
-fno-reorder-blocks
-fno-tree-vect-loop-version
使用时减小代码大小。有没有比实验更系统的方法? GCC文档描述了各种选项,但是没有说它们是否更适合于加快执行时间或减少代码大小。
最佳答案
-Os启用除以下内容之外的所有-O2优化:
-falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks
-freorder-blocks和分区-fprefetch-loop-arrays -ftree-vect-loop-version
请记住,-Os使gcc执行其他操作以减小大小,因此可能还不够。