varasm.c (record_constant_1): Record the CODE_LABEL when taking the address of a LABEL_REF.

* varasm.c (record_constant_1): Record the CODE_LABEL when
        taking the address of a LABEL_REF.

From-SVN: r33517
This commit is contained in:
Richard Henderson 2000-04-28 13:25:38 -07:00 committed by Richard Henderson
parent ce48579b9a
commit e67cd9f80d
2 changed files with 23 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2000-04-28 Richard Henderson <rth@cygnus.com>
* varasm.c (record_constant_1): Record the CODE_LABEL when
taking the address of a LABEL_REF.
2000-04-28 Richard Henderson <rth@cygnus.com>
Jan Hubicka <jh@suse.cz>

View File

@ -2867,9 +2867,24 @@ record_constant_1 (exp)
/* Record the offset. */
obstack_grow (&permanent_obstack,
(char *) &value.offset, sizeof value.offset);
/* Record the symbol name. */
obstack_grow (&permanent_obstack, XSTR (value.base, 0),
strlen (XSTR (value.base, 0)) + 1);
switch (GET_CODE (value.base))
{
case SYMBOL_REF:
/* Record the symbol name. */
obstack_grow (&permanent_obstack, XSTR (value.base, 0),
strlen (XSTR (value.base, 0)) + 1);
break;
case LABEL_REF:
/* Record the address of the CODE_LABEL. It may not have
been emitted yet, so it's UID may be zero. But pointer
identity is good enough. */
obstack_grow (&permanent_obstack, &XEXP (value.base, 0),
sizeof (rtx));
break;
default:
abort ();
}
}
return;