diff options
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/config/i386/i386.md | 12 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fab6e1..68bae44 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-06-04 Richard Henderson <rth@redhat.com> + + * config/i386/i386.md (align): Use ASM_OUTPUT_*ALIGN macros. + 2003-06-04 Andrew Pinski <pinskia@physics.uc.edu> * config/rs6000/darwin.h (RS6000_OUTPUT_BASENAME): diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 65b54ea..6806c7a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14279,16 +14279,20 @@ (set_attr "modrm" "0") (set_attr "ppro_uops" "one")]) -;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and -;; all of memory. This blocks insns from being moved across this point. +;; Align to 16-byte boundary, max skip in op0. Used to avoid +;; branch prediction penalty for the third jump in a 16-byte +;; block on K8. (define_insn "align" [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_ALIGN)] "" { -#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN - return ".p2align\t4,,%c0"; +#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN + ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file, 4, INTVAL (operands[0])); +#else + ASM_OUTPUT_ALIGN (asm_out_file, 4); #endif + return ""; } [(set_attr "length" "16")]) |
