This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR target/39942: Nonoptimal code - leaveq; xchg %ax,%ax; retq

H.J. Lu wrote:

ix86_avoid_jump_misspredicts use "align" pattern to pad to a 16byte
boundary. "align" pattern uses ASM_OUTPUT_MAX_SKIP_ALIGN. For Linux,
See my
patch, I think ASM_OUTPUT_MAX_SKIP_ALIGN should be fixed anyway
to not do the extra .p2align 3 if MAX_SKIP is less than 7.
ASM_OUTPUT_MAX_SKIP_PAD doesn't hurt, though I think it only rarely
will make a difference. ïAnyway, I think it makes no sense to require
it duplicated in all the headers, just define the new macro
in linux.h and x86-64.h and in just use ASM_OUTPUT_MAX_SKIP_PAD
if it exists, otherwise fall back to ASM_OUTPUT_MAX_SKIP_ALIGN.

Here is the updated patch. OK for trunk?

2009-05-15 H.J. Lu <>

	PR target/39942
	* config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
	gen_align with gen_pad.

	* config/i386/ (align): Renamed to ...
	(pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with

* config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
* config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.

OK for mainline; see bellow for a small comment.

+  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));	\
+  }

Please follow GNU codding standard in the code above (in both instances).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]