summaryrefslogtreecommitdiff
path: root/gcc/config/i386/gas.h
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-05-21 19:12:20 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-05-21 19:12:20 +0000
commit3245cd4f3ecba3217d5d170fc67739415880e1cf (patch)
treedd9220c69002dd9a1d5f1820be3e18c2112c0bec /gcc/config/i386/gas.h
parentaff4ad886056a6d7cda3c7dcd7bf6131b1100582 (diff)
downloadgcc-3245cd4f3ecba3217d5d170fc67739415880e1cf.tar.gz
* acconfig.h (HAVE_GAS_MAX_SKIP_P2ALIGN): New tag.
* configure.in: Check for it. * i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Use it. * final.c (uid_align, uid_shuid, label_align): Make static. (label_align): Change type to struct label_alignment pointer. (LABEL_TO_ALIGNMENT, shorten_branches): Update due to type change. (LABEL_TO_MAX_SKIP): Define. (LABEL_ALIGN_MAX_SKIP, LOOP_ALIGN_MAX_SKIP, LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Provide defaults. (shorten_branches): Record the maximum bytes to skip when aligning a label. (final_scan_insn): Use the maximum bytes to skip when aligning a label if ASM_OUTPUT_MAX_SKIP_ALIGN is available. * i386.h (LOOP_ALIGN_MAX_SKIP, LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Define. * i386.c (override_options): i386_align_jumps and i386_align_loops default to 4 if ASM_OUTPUT_MAX_SKIP_ALIGN is available. * invoke.texi: Document new i386 align-loops and align-jumps behavior. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19933 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/gas.h')
-rw-r--r--gcc/config/i386/gas.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/config/i386/gas.h b/gcc/config/i386/gas.h
index 50976cf8bec..2da338a6518 100644
--- a/gcc/config/i386/gas.h
+++ b/gcc/config/i386/gas.h
@@ -85,6 +85,19 @@ Boston, MA 02111-1307, USA. */
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
if ((LOG)!=0) fprintf ((FILE), "\t.balign %d\n", 1<<(LOG))
#endif
+
+/* A C statement to output to the stdio stream FILE an assembler
+ command to advance the location counter to a multiple of 1<<LOG
+ bytes if it is within MAX_SKIP bytes.
+
+ This is used to align code labels according to Intel recommendations. */
+
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+# define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
+ if ((LOG)!=0) \
+ if ((MAX_SKIP)==0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
+ else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP))
+#endif
/* A C statement or statements which output an assembler instruction
opcode to the stdio stream STREAM. The macro-operand PTR is a