Assembler Commands for Alignment#
This describes commands for alignment.
-
JUMP_ALIGN(label)#
The alignment (log base 2) to put in front of
label
, which is a common destination of jumps and has no fallthru incoming edge.This macro need not be defined if you don’t want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro.
Unless it’s necessary to inspect the
label
parameter, it is better to set the variablealign_jumps
in the target’sTARGET_OPTION_OVERRIDE
. Otherwise, you should try to honor the user’s selection inalign_jumps
in aJUMP_ALIGN
implementation.
-
LABEL_ALIGN_AFTER_BARRIER(label)#
The alignment (log base 2) to put in front of
label
, which follows aBARRIER
.This macro need not be defined if you don’t want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro.
-
LOOP_ALIGN(label)#
The alignment (log base 2) to put in front of
label
that heads a frequently executed basic block (usually the header of a loop).This macro need not be defined if you don’t want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro.
Unless it’s necessary to inspect the
label
parameter, it is better to set the variablealign_loops
in the target’sTARGET_OPTION_OVERRIDE
. Otherwise, you should try to honor the user’s selection inalign_loops
in aLOOP_ALIGN
implementation.
-
LABEL_ALIGN(label)#
The alignment (log base 2) to put in front of
label
. IfLABEL_ALIGN_AFTER_BARRIER
/LOOP_ALIGN
specify a different alignment, the maximum of the specified values is used.Unless it’s necessary to inspect the
label
parameter, it is better to set the variablealign_labels
in the target’sTARGET_OPTION_OVERRIDE
. Otherwise, you should try to honor the user’s selection inalign_labels
in aLABEL_ALIGN
implementation.
-
ASM_OUTPUT_SKIP(stream, nbytes)#
A C statement to output to the stdio stream
stream
an assembler instruction to advance the location counter bynbytes
bytes. Those bytes should be zero when loaded.nbytes
will be a C expression of typeunsigned HOST_WIDE_INT
.
-
ASM_NO_SKIP_IN_TEXT#
Define this macro if
ASM_OUTPUT_SKIP
should not be used in the text section because it fails to put zeros in the bytes that are skipped. This is true on many Unix systems, where the pseudo–op to skip bytes produces no-op instructions rather than zeros when used in the text section.
-
ASM_OUTPUT_ALIGN(stream, power)#
A C statement to output to the stdio stream
stream
an assembler command to advance the location counter to a multiple of 2 to thepower
bytes.power
will be a C expression of typeint
.
-
ASM_OUTPUT_ALIGN_WITH_NOP(stream, power)#
Like
ASM_OUTPUT_ALIGN
, except that the ‘nop’ instruction is used for padding, if necessary.
-
ASM_OUTPUT_MAX_SKIP_ALIGN(stream, power, max_skip)#
A C statement to output to the stdio stream
stream
an assembler command to advance the location counter to a multiple of 2 to thepower
bytes, but only ifmax_skip
or fewer bytes are needed to satisfy the alignment request.power
andmax_skip
will be a C expression of typeint
.