5.7.7.9 Align-jumps Option

The -falign-jumps=n:m:n2:m2 option aligns branch targets, where the targets can only be reached by jumping, to the next power of two greater than n, skipping up to m-1 bytes. For instance, -falign-jumps=32 aligns targets to the next 32-byte boundary; -falign-jumps=24 aligns targets 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-jumps form of this option is equivalent to -falign-jumps=1, which implies that the target is not aligned. If n is not specified or is zero, , a default of alignment of 1 byte is used, which implies that the target 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-jumps=32 aligns targets to the next 32-byte boundary; -falign-jumps=24 aligns targets 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-jumps=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

This option is automatically enabled at optimization levels -O2 and -O3.

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