This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch, moxie] Fix tramponline alignment problem
- From: Anthony Green <green at moxielogic dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 03 Feb 2010 06:34:55 -0500
- Subject: [patch, moxie] Fix tramponline alignment problem
This fixes a couple of moxie testsuite failures, including nestfunc-3.c,
by aligning trampolines so that we're always writing aligned words when
we're filling trampoline templates.
I'm checking it in.
Thanks,
AG
2010-02-03 Anthony Green <green@moxielogic.com>
* config/moxie/moxie.c (moxie_asm_trampoline_template): Introduce
nop padding in order to maintain alignment of storage location of
target function address.
(moxie_trampoline_init): Store target function address at newly
aligned location.
* config/moxie/moxie.h (TRAMPOLINE_ALIGNMENT): Increase alignment
to 32.
(TRAMPOLINE_SIZE): Increase size by 2 bytes for alignment padding.
diff --git a/gcc/gcc/config/moxie/moxie.c b/gcc/gcc/config/moxie/moxie.c
index 7515fa2..b1cefb6 100644
--- a/gcc/gcc/config/moxie/moxie.c
+++ b/gcc/gcc/config/moxie/moxie.c
@@ -1,5 +1,5 @@
/* Target Code for moxie
- Copyright (C) 2008, 2009 Free Software Foundation
+ Copyright (C) 2008, 2009, 2010 Free Software Foundation
Contributed by Anthony Green.
This file is part of GCC.
@@ -483,6 +483,7 @@ moxie_asm_trampoline_template (FILE *f)
fprintf (f, "\tldi.l $r0, 0x0\n");
fprintf (f, "\tsto.l 0x8($fp), $r0\n");
fprintf (f, "\tpop $sp, $r0\n");
+ fprintf (f, "\tnop\n");
fprintf (f, "\tjmpa 0x0\n");
}
@@ -498,7 +499,7 @@ moxie_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
mem = adjust_address (m_tramp, SImode, 4);
emit_move_insn (mem, chain_value);
- mem = adjust_address (m_tramp, SImode, 18);
+ mem = adjust_address (m_tramp, SImode, 20);
emit_move_insn (mem, fnaddr);
}
diff --git a/gcc/gcc/config/moxie/moxie.h b/gcc/gcc/config/moxie/moxie.h
index 384bce4..928ca88 100644
--- a/gcc/gcc/config/moxie/moxie.h
+++ b/gcc/gcc/config/moxie/moxie.h
@@ -1,5 +1,5 @@
/* Target Definitions for moxie.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Anthony Green.
This file is part of GCC.
@@ -386,10 +386,10 @@ enum reg_class
#define FUNCTION_PROFILER(FILE,LABELNO) (abort (), 0)
/* Trampolines for Nested Functions. */
-#define TRAMPOLINE_SIZE (2 + 6 + 6 + 2 + 6)
+#define TRAMPOLINE_SIZE (2 + 6 + 6 + 2 + 2 + 6)
/* Alignment required for trampolines, in bits. */
-#define TRAMPOLINE_ALIGNMENT 16
+#define TRAMPOLINE_ALIGNMENT 32
/* An alias for the machine mode for pointers. */
#define Pmode SImode