diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-02-25 22:39:34 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-02-25 15:39:34 -0700 |
commit | b94b5c16dd72027309b7f781ce2d02ef07de580c (patch) | |
tree | 68c9c31483dbdc53e668328608977cd9d912f18d /gcc | |
parent | 9b899da08768c47b59bda184944eb2296515f719 (diff) | |
download | gcc-b94b5c16dd72027309b7f781ce2d02ef07de580c.zip gcc-b94b5c16dd72027309b7f781ce2d02ef07de580c.tar.gz gcc-b94b5c16dd72027309b7f781ce2d02ef07de580c.tar.bz2 |
i386.c (struct machine_function): Add new fields for PIC stuff.
* i386.c (struct machine_function): Add new fields for PIC stuff.
(save_386_machine_status): Fix argument to xmalloc. Save pic_label_rtx
and pic_label_name.
(restore_386_machine_status): Corresponding changes.
(clear_386_stack_locals): Also clear pic_label_rtx and pic_label_name.
From-SVN: r18237
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 12 |
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c4b8419..435e37c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Wed Feb 25 23:40:54 1998 Jeffrey A Law (law@cygnus.com) + + * i386.c (struct machine_function): Add new fields for PIC stuff. + (save_386_machine_status): Fix argument to xmalloc. Save pic_label_rtx + and pic_label_name. + (restore_386_machine_status): Corresponding changes. + (clear_386_stack_locals): Also clear pic_label_rtx and pic_label_name. + Wed Feb 25 01:31:40 1998 Jeffrey A Law (law@cygnus.com) * c-parse.y (undeclared variable error): Tweak error message diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 75e44c1..1ca072a 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4185,6 +4185,8 @@ static rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS]; struct machine_function { rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS]; + rtx pic_label_rtx; + char pic_label_name[256]; }; /* Functions to save and restore i386_stack_locals. @@ -4195,9 +4197,12 @@ void save_386_machine_status (p) struct function *p; { - p->machine = (struct machine_function *) xmalloc (sizeof i386_stack_locals); + p->machine + = (struct machine_function *) xmalloc (sizeof (struct machine_function)); bcopy ((char *) i386_stack_locals, (char *) p->machine->i386_stack_locals, sizeof i386_stack_locals); + p->machine->pic_label_rtx = pic_label_rtx; + bcopy (pic_label_name, p->machine->pic_label_name, 256); } void @@ -4206,7 +4211,10 @@ restore_386_machine_status (p) { bcopy ((char *) p->machine->i386_stack_locals, (char *) i386_stack_locals, sizeof i386_stack_locals); + pic_label_rtx = p->machine->pic_label_rtx; + bcopy (p->machine->pic_label_name, pic_label_name, 256); free (p->machine); + p->machine = NULL; } /* Clear stack slot assignments remembered from previous functions. @@ -4224,6 +4232,8 @@ clear_386_stack_locals () for (n = 0; n < MAX_386_STACK_LOCALS; n++) i386_stack_locals[(int) mode][n] = NULL_RTX; + pic_label_rtx = NULL_RTX; + bzero (pic_label_name, 256); /* Arrange to save and restore i386_stack_locals around nested functions. */ save_machine_status = save_386_machine_status; restore_machine_status = restore_386_machine_status; |