* 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:
parent
d6df9efb6d
commit
5665caa28f
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue