diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-07-03 02:31:43 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-07-03 02:31:43 +0000 |
commit | 46ba8e1c81808e32121dc7e9845d1afbf993d6ef (patch) | |
tree | 0097652756cf158000b766a20c97ff341681456f | |
parent | 76f71160f78f516e4eb1c8a1a002b37a51dc85c2 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 11 | ||||
-rw-r--r-- | gcc/config/alpha/vms.h | 2 |
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. */ |