diff options
author | Richard Henderson <rth@gcc.gnu.org> | 1999-10-13 10:09:18 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-10-13 10:09:18 -0700 |
commit | 005537dfed601a7ec39b4d40f9d0e3bc954f167f (patch) | |
tree | 618d754ad605b42a6cdca53980a97a361d152aa9 /gcc/ggc-common.c | |
parent | 1f1479dc91216e63870c59ad48fdbb0b1c060d82 (diff) | |
download | gcc-005537dfed601a7ec39b4d40f9d0e3bc954f167f.zip gcc-005537dfed601a7ec39b4d40f9d0e3bc954f167f.tar.gz gcc-005537dfed601a7ec39b4d40f9d0e3bc954f167f.tar.bz2 |
Simplified GC interface and other goodies.
From-SVN: r29946
Diffstat (limited to 'gcc/ggc-common.c')
-rw-r--r-- | gcc/ggc-common.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index 6df622e..3aa0d99 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -268,21 +268,18 @@ ggc_mark_rtx_children (r) ggc_mark_rtvec (XVEC (r, i)); break; case 'S': case 's': - ggc_mark_string_if_gcable (XSTR (r, i)); + ggc_mark_if_gcable (XSTR (r, i)); break; } } } void -ggc_mark_rtvec (v) +ggc_mark_rtvec_children (v) rtvec v; { int i; - if (v == NULL || ggc_set_mark_rtvec (v)) - return; - i = GET_NUM_ELEM (v); while (--i >= 0) ggc_mark_rtx (RTVEC_ELT (v, i)); @@ -451,3 +448,26 @@ ggc_mark_tree_hash_table (ht) hash_traverse (ht, ggc_mark_tree_hash_table_entry, /*info=*/0); } +/* Allocation wrappers. */ + +char * +ggc_alloc_string (contents, length) + const char *contents; + int length; +{ + char *string; + + if (length < 0) + { + if (contents == NULL) + return NULL; + length = strlen (contents); + } + + string = (char *) ggc_alloc_obj (length + 1, 0); + if (contents != NULL) + memcpy (string, contents, length); + string[length] = 0; + + return string; +} |