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.
