diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-14 09:08:58 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-14 09:08:58 -0400 |
commit | 9973f4a2949b6de3b35752399aea27842e79efdd (patch) | |
tree | 5cb7ec473046e10376ff864b6ae58b9689350028 /gcc | |
parent | 1c3b948b0706f86902f6fbd8f92bc27d6bc8f738 (diff) | |
download | gcc-9973f4a2949b6de3b35752399aea27842e79efdd.zip gcc-9973f4a2949b6de3b35752399aea27842e79efdd.tar.gz gcc-9973f4a2949b6de3b35752399aea27842e79efdd.tar.bz2 |
(call_operand): Any reg is valid for NT.
(output_prologue): Never need GP for Windows/NT.
Set SYMBOL_REF_FLAG in current function decl.
From-SVN: r9381
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/alpha/alpha.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 3358573..83622c8 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -369,7 +369,8 @@ call_operand (op, mode) return 0; return (GET_CODE (op) == SYMBOL_REF - || (GET_CODE (op) == REG && REGNO (op) == 27)); + || (GET_CODE (op) == REG + && (REGNO (op) == 27 || WINDOWS_NT))); } /* Return 1 if OP is a valid Alpha comparison operator. Here we know which @@ -1341,7 +1342,9 @@ output_prolog (file, size) /* If we need a GP (we have a LDSYM insn or a CALL_INSN), load it first. Even if we are a static function, we still need to do this in case - our address is taken and passed to something like qsort. */ + our address is taken and passed to something like qsort. + + We never need a GP for Windows/NT. */ alpha_function_needs_gp = 0; for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) @@ -1356,12 +1359,15 @@ output_prolog (file, size) break; } - if (alpha_function_needs_gp) - fprintf (file, "\tldgp $29,0($27)\n"); + if (WINDOWS_NT == 0) + { + if (alpha_function_needs_gp) + fprintf (file, "\tldgp $29,0($27)\n"); - /* Put a label after the GP load so we can enter the function at it. */ - assemble_name (file, alpha_function_name); - fprintf (file, "..ng:\n"); + /* Put a label after the GP load so we can enter the function at it. */ + assemble_name (file, alpha_function_name); + fprintf (file, "..ng:\n"); + } /* Adjust the stack by the frame size. If the frame size is > 4096 bytes, we need to be sure we probe somewhere in the first and last @@ -1578,6 +1584,9 @@ output_epilog (file, size) assemble_name (file, alpha_function_name); fprintf (file, "\n"); inside_function = FALSE; + + /* Show that we know this function if it is called again. */ + SYMBOL_REF_FLAG (XEXP (DECL_RTL (current_function_decl), 0)) = 1; } /* Debugging support. */ |