This is the mail archive of the gcc-patches@gcc.gnu.org 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,
it
See my http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00702.html
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 i386.md 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 <hongjiu.lu@intel.com>

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

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

* 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.


+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+#undef  ASM_OUTPUT_MAX_SKIP_PAD
+#define ASM_OUTPUT_MAX_SKIP_PAD(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));	\
+  }

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


Thanks,
Uros.



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