This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: g77 testsuite failures under hpux 10.20
- To: law at cygnus dot com
- Subject: Re: g77 testsuite failures under hpux 10.20
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Mon, 10 Jul 2000 12:16:07 -0400 (EDT)
- Cc: rth at cygnus dot com, gcc-bugs at gcc dot gnu dot org
On the pa port, function labels were previously being stored on the
saveable obstack. These labels were popped from the obstack at the end
of processing the function in which the label was used. However, the g77
code was recently changed and now these labels must be retained for
the entire program unit.
The enclosed patch changes the storage for these labels to gc memory if
ggc_p is true. A complete bootstrap and testsuite has been run. There
are no longer any unexpected g77 FAILs. I couldn't see any C regressions
which appeared related to the patch. However, the number of fssa failures has
increased since I last preformed the complete testsuite.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
2000-07-07 J. David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.c (hppa_encode_label): Store labels in gc memory when ggc_p is
true.
--- pa.c.orig Tue Apr 11 17:55:55 2000
+++ pa.c Fri Jul 7 13:16:13 2000
@@ -5951,9 +5951,9 @@
space), and special magic is needed to construct their address.
For reasons too disgusting to describe storage for the new name
- is allocated either on the saveable_obstack (released at function
- exit) or on the permanent_obstack for things that can never change
- (libcall names for example). */
+ is allocated as a ggc string, or as a string on the saveable_obstack
+ (released at function exit) or on the permanent_obstack for things
+ that can never change (libcall names for example). */
void
hppa_encode_label (sym, permanent)
@@ -5964,7 +5964,10 @@
int len = strlen (str);
char *newstr;
- newstr = obstack_alloc ((permanent ? &permanent_obstack : saveable_obstack),
+ if (ggc_p)
+ newstr = ggc_alloc_string (NULL, len + 1);
+ else
+ newstr = obstack_alloc ((permanent ? &permanent_obstack : saveable_obstack),
len + 2);
if (str[0] == '*')