* i386.c: Revert 07-30 ix86_output_main_function_alignment_hack.
From-SVN: r44638
This commit is contained in:
parent
8bbbef3434
commit
68c5782de8
@ -1,3 +1,7 @@
|
|||||||
|
2001-08-04 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* i386.c: Revert 07-30 ix86_output_main_function_alignment_hack.
|
||||||
|
|
||||||
2001-08-04 Neil Booth <neil@daikokuya.demon.co.uk>
|
2001-08-04 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||||
|
|
||||||
* cpphash.h (struct cpp_reader): New member directive_line.
|
* cpphash.h (struct cpp_reader): New member directive_line.
|
||||||
|
@ -574,7 +574,6 @@ static HOST_WIDE_INT ix86_GOT_alias_set PARAMS ((void));
|
|||||||
static void ix86_adjust_counter PARAMS ((rtx, HOST_WIDE_INT));
|
static void ix86_adjust_counter PARAMS ((rtx, HOST_WIDE_INT));
|
||||||
static rtx ix86_expand_aligntest PARAMS ((rtx, int));
|
static rtx ix86_expand_aligntest PARAMS ((rtx, int));
|
||||||
static void ix86_expand_strlensi_unroll_1 PARAMS ((rtx, rtx));
|
static void ix86_expand_strlensi_unroll_1 PARAMS ((rtx, rtx));
|
||||||
static void ix86_output_main_function_alignment_hack PARAMS ((FILE *f, int));
|
|
||||||
|
|
||||||
struct ix86_address
|
struct ix86_address
|
||||||
{
|
{
|
||||||
@ -640,10 +639,6 @@ static void sco_asm_named_section PARAMS ((const char *, unsigned int,
|
|||||||
HOST_WIDE_INT));
|
HOST_WIDE_INT));
|
||||||
# undef TARGET_ASM_FUNCTION_PROLOGUE
|
# undef TARGET_ASM_FUNCTION_PROLOGUE
|
||||||
# define TARGET_ASM_FUNCTION_PROLOGUE ix86_osf_output_function_prologue
|
# define TARGET_ASM_FUNCTION_PROLOGUE ix86_osf_output_function_prologue
|
||||||
#else
|
|
||||||
# undef TARGET_ASM_FUNCTION_PROLOGUE
|
|
||||||
# define TARGET_ASM_FUNCTION_PROLOGUE \
|
|
||||||
ix86_output_main_function_alignment_hack
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef TARGET_ASM_OPEN_PAREN
|
#undef TARGET_ASM_OPEN_PAREN
|
||||||
@ -10788,48 +10783,6 @@ ix86_memory_move_cost (mode, class, in)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Most of current runtimes (Jul 2001) do not align stack properly when
|
|
||||||
entering main, so emit an wrapper to align stack before the real main
|
|
||||||
code is called.
|
|
||||||
|
|
||||||
This can eventually go if we manage to fix the runtimes or teach gcc
|
|
||||||
to dynamically align stack in main automatically.
|
|
||||||
|
|
||||||
Adding check to configure is probably not good idea, as binarry can move
|
|
||||||
from one shared library to older. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
ix86_output_main_function_alignment_hack (file, size)
|
|
||||||
FILE *file;
|
|
||||||
int size ATTRIBUTE_UNUSED;
|
|
||||||
{
|
|
||||||
rtx label;
|
|
||||||
char buf[256];
|
|
||||||
/* Check that we see main function with maximally 8 bytes of arguments.
|
|
||||||
if so, emit the hack to align stack for runtimes, where this constraint
|
|
||||||
is broken. */
|
|
||||||
if (strcmp (cfun->name, "main"))
|
|
||||||
return;
|
|
||||||
if (cfun->pops_args || cfun->args_size > 12)
|
|
||||||
return;
|
|
||||||
if (PREFERRED_STACK_BOUNDARY <= 2)
|
|
||||||
return;
|
|
||||||
label = gen_label_rtx ();
|
|
||||||
fprintf (file, "\tpushl\t%%ebp\n");
|
|
||||||
fprintf (file, "\tmovl\t%%esp, %%ebp\n");
|
|
||||||
fprintf (file, "\tandl\t$0xfffffff0, %%esp\n");
|
|
||||||
fprintf (file, "\tpushl\t%%ebp\n");
|
|
||||||
fprintf (file, "\tpushl\t16(%%ebp)\n");
|
|
||||||
fprintf (file, "\tpushl\t12(%%ebp)\n");
|
|
||||||
fprintf (file, "\tpushl\t8(%%ebp)\n");
|
|
||||||
fprintf (file, "\tcall\t");
|
|
||||||
ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (label));
|
|
||||||
assemble_name (file, buf);
|
|
||||||
fprintf (file, "\n\tleave\n");
|
|
||||||
fprintf (file, "\tret\n");
|
|
||||||
ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (label));
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(TARGET_ELF) && defined(TARGET_COFF)
|
#if defined(TARGET_ELF) && defined(TARGET_COFF)
|
||||||
static void
|
static void
|
||||||
sco_asm_named_section (name, flags, align)
|
sco_asm_named_section (name, flags, align)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user