* Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12

for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18989
This commit is contained in:
Jeff Law 1998-04-04 06:54:28 -07:00
parent d6df9efb6d
commit 5665caa28f
1 changed files with 37 additions and 10 deletions

View File

@ -1,5 +1,5 @@
/* Subroutines used for code generation on the DEC Alpha.
Copyright (C) 1992, 93-97, 1998 Free Software Foundation, Inc.
Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GNU CC.
@ -3130,8 +3130,18 @@ output_prolog (file, size)
STACK_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM);
/* Describe our frame. */
fprintf (file, "\t.frame $%d,%d,$26,%d\n",
unwind_regno, frame_size, rsa_offset);
fprintf (file, "\t.frame $%d,", unwind_regno);
/* If the frame size is larger than an integer, print it as zero to
avoid an assembler error. We won't be properly describing such a
frame, but that's the best we can do. */
fprintf (file, HOST_WIDE_INT_PRINT_DEC,
#if HOST_BITS_PER_WIDE_INT == 64
frame_size >= (1l << 31) ? 0:
#endif
frame_size
);
fprintf (file, ",$26,%d\n", rsa_offset);
/* If we have to allocate space for outgoing args, do it now. */
if (current_function_outgoing_args_size != 0)
@ -3316,7 +3326,7 @@ alpha_does_function_need_gp ()
void
output_prolog (file, size)
FILE *file;
int size;
HOST_WIDE_INT size;
{
HOST_WIDE_INT out_args_size
= ALPHA_ROUND (current_function_outgoing_args_size);
@ -3449,10 +3459,20 @@ output_prolog (file, size)
/* Describe our frame. */
if (!flag_inhibit_size_directive)
{
fprintf (file, "\t.frame $%d,%d,$26,%d\n",
fprintf (file, "\t.frame $%d,",
(frame_pointer_needed
? HARD_FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM),
frame_size, current_function_pretend_args_size);
? HARD_FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM));
/* If the frame size is larger than an integer, print it as zero to
avoid an assembler error. We won't be properly describing such a
frame, but that's the best we can do. */
fprintf (file, HOST_WIDE_INT_PRINT_DEC,
#if HOST_BITS_PER_WIDE_INT == 64
frame_size >= (1l << 31) ? 0 :
#endif
frame_size
);
fprintf (file, ",$26,%d\n", current_function_pretend_args_size);
}
/* Cope with very large offsets to the register save area. */
@ -3495,8 +3515,15 @@ output_prolog (file, size)
/* Print the register mask and do floating-point saves. */
if (reg_mask && !flag_inhibit_size_directive)
fprintf (file, "\t.mask 0x%x,%d\n", reg_mask,
actual_start_reg_offset - frame_size);
{
fprintf (file, "\t.mask 0x%x,", reg_mask);
fprintf (file, HOST_WIDE_INT_PRINT_DEC,
#if HOST_BITS_PER_WIDE_INT == 64
frame_size >= (1l << 31) ? 0 :
#endif
actual_start_reg_offset - frame_size);
fprintf (file, "\n");
}
start_reg_offset = reg_offset;
reg_mask = 0;
@ -3711,7 +3738,7 @@ alpha_output_filename (stream, name)
}
else if (name != current_function_file
&& strcmp (name, current_function_file) != 0)
&& strcmp (name, current_function_file) != 0)
{
if (inside_function && ! TARGET_GAS)
fprintf (stream, "\t#.file\t%d ", num_source_filenames);