QiangHuang <qianghuang87@xxxxxxxxx> writes: > I learned that gcc has two kinds of compilation mode, one for > "unit-at-a-time" and the other one for "function-at-a-time". > > Could someone tell me the exact difference between them ? In unit-at-a-time mode, every function in the file is converted to GIMPLE, inlining is run, and then each function is converted to RTL and then assembler code. In function-at-a-time mode, each function is converted to GIMPLE, then to RTL, then to assembler code. Thus one difference is whether a function can inline a function defined later in the source file. In general gcc is moving to supporting only unit-at-a-time mode. The only reason to ever use function-at-a-time mode is to reduce the memory requirements of the compiler. It should not be used for any other reason. Ian