# Understanding Code Layout and Multi-Object IPO

One of the optimizations performed during an IPO compilation is code layout. The analysis performed by the compiler during multi-file IPO determines a layout order for all of the routines for which it has intermediate representation (IR) information. For a multi-object IPO compilation, the compiler must tell the linker about the desired order.

The compiler first puts each routine in a named text section that varies depending on the operating system:

Windows:

- The first routine is placed in .text$00001, the second is placed in .text$00002, and so on.

Linux:

- The first routine is placed in .text00001, the second is placed in .text00002, and so on.

Parent topic: Interprocedural Optimization (IPO)