5.7.7.11 Align-loops Option

The -falign-loops=n:m:n2:m2 option aligns loops to the next power of two greater than n, skipping up to m-1 bytes. For instance, -falign-loops=32 aligns loops to the next 32-byte boundary; -falign-loops=24 aligns loops to the next 32-byte boundary but only if this can be done by skipping no more than 23 bytes.

All arguments are optional. Arguments preceding any argument that is specified are mandatory. If m is not specified, it defaults to n. The -fno-align-loops form of this option is equivalent to -falign-loops=1, which implies that the loop is not aligned. If n is not specified or is zero, a default of alignment of 1 byte is used, which implies that the loop is not aligned. For PIC32C/SAM devices, nmust not exceed 64. If n is not a power of 2, the alignment value is rounded up.

For instance, -falign-loops=32 aligns loops to the next 32-byte boundary; -falign-loops=24 aligns loops to the next 32-byte boundary but only if this can be done by skipping no more than 23 bytes; -falign-jumps=32:7 aligns to the next 32-byte boundary only if this can be done by skipping 6 bytes or fewer.

The second pair of n2:m2 values allows you to specify a secondary alignment: -falign-loops=64:7:32:3 aligns to the next 64-byte boundary if this can be done by skipping 6 bytes or fewer, otherwise aligns to the next 32-byte boundary if this can be done by skipping 2 bytes or fewer. If m2 is not specified, it defaults to n2

If the loops are executed many times, this makes up for any execution of the dummy padding instructions.

If the alignment values specified by -falign-labels is greater than that specified with this option, then its value is used to align loops instead.