summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1998-07-03 02:31:43 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1998-07-03 02:31:43 +0000
commit46ba8e1c81808e32121dc7e9845d1afbf993d6ef (patch)
tree0097652756cf158000b766a20c97ff341681456f
parent76f71160f78f516e4eb1c8a1a002b37a51dc85c2 (diff)
downloadgcc-46ba8e1c81808e32121dc7e9845d1afbf993d6ef.tar.gz
* alpha.c (alpha_initialize_trampoline): Hack around Pmode/ptr_mode
lossage on VMS. Reported by kkaempf@rmi.de. * alpha/vms.h (TRAMPOLINE_TEMPLATE): Add missing 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20916 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/alpha/alpha.c11
-rw-r--r--gcc/config/alpha/vms.h2
3 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5d7f90efdc2..0f21f6309ed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Fri Jul 3 02:28:05 1998 Richard Henderson <rth@cygnus.com>
+
+ * alpha.c (alpha_initialize_trampoline): Hack around Pmode/ptr_mode
+ lossage on VMS. Reported by kkaempf@rmi.de.
+ * alpha/vms.h (TRAMPOLINE_TEMPLATE): Add missing 0.
+
Thu Jul 2 17:41:14 1998 Nick Clifton <nickc@cygnus.com>
* config/m32r/m32r.h (MUST_PASS_IN_STACK): Override default
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index d4cff504533..68702a299fd 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2841,12 +2841,15 @@ alpha_initialize_trampoline (tramp, fnaddr, cxt, fnofs, cxtofs, jmpofs)
int fnofs, cxtofs, jmpofs;
{
rtx temp, temp1, addr;
+ /* ??? Something is wrong with VMS codegen in that we get aborts when
+ using ptr_mode. Hack around it for now. */
+ enum machine_mode mode = TARGET_OPEN_VMS ? Pmode : ptr_mode;
/* Store function address and CXT. */
- addr = memory_address (ptr_mode, plus_constant (tramp, fnofs));
- emit_move_insn (gen_rtx (MEM, ptr_mode, addr), fnaddr);
- addr = memory_address (ptr_mode, plus_constant (tramp, cxtofs));
- emit_move_insn (gen_rtx (MEM, ptr_mode, addr), cxt);
+ addr = memory_address (mode, plus_constant (tramp, fnofs));
+ emit_move_insn (gen_rtx (MEM, mode, addr), fnaddr);
+ addr = memory_address (mode, plus_constant (tramp, cxtofs));
+ emit_move_insn (gen_rtx (MEM, mode, addr), cxt);
/* This has been disabled since the hint only has a 32k range, and in
no existing OS is the stack within 32k of the text segment. */
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
index e318f0bfde4..d91c47cfc23 100644
--- a/gcc/config/alpha/vms.h
+++ b/gcc/config/alpha/vms.h
@@ -392,7 +392,7 @@ do { \
{ \
fprintf (FILE, "\t.quad 0\n"); \
fprintf (FILE, "\t.linkage __tramp\n"); \
- fprintf (FILE, "\t.quad 0\n"); \
+ fprintf (FILE, "\t.quad 0,0\n"); \
}
/* Length in units of the trampoline for entering a nested function. */