aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-07-02 19:31:43 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-07-02 19:31:43 -0700
commitd420e567dc52d4c7c384ffdcefe4bd4ae8f4e30b (patch)
tree0097652756cf158000b766a20c97ff341681456f /gcc
parentc3b9a03836baa44537eac714070c078fc7561d3a (diff)
downloadgcc-d420e567dc52d4c7c384ffdcefe4bd4ae8f4e30b.zip
gcc-d420e567dc52d4c7c384ffdcefe4bd4ae8f4e30b.tar.gz
gcc-d420e567dc52d4c7c384ffdcefe4bd4ae8f4e30b.tar.bz2
alpha.c (alpha_initialize_trampoline): Hack around Pmode/ptr_mode lossage on VMS.
* 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. From-SVN: r20916
Diffstat (limited to 'gcc')
-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 5d7f90e..0f21f63 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 d4cff50..68702a2 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 e318f0b..d91c47c 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. */