aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-02-25 22:39:34 +0000
committerJeff Law <law@gcc.gnu.org>1998-02-25 15:39:34 -0700
commitb94b5c16dd72027309b7f781ce2d02ef07de580c (patch)
tree68c9c31483dbdc53e668328608977cd9d912f18d /gcc
parent9b899da08768c47b59bda184944eb2296515f719 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/i386/i386.c12
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;