diff options
author | Richard Henderson <rth@cygnus.com> | 1998-07-02 19:31:43 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-07-02 19:31:43 -0700 |
commit | d420e567dc52d4c7c384ffdcefe4bd4ae8f4e30b (patch) | |
tree | 0097652756cf158000b766a20c97ff341681456f /gcc | |
parent | c3b9a03836baa44537eac714070c078fc7561d3a (diff) | |
download | gcc-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/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 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. */ |