> Hi,
> I always considered the cgrpah_node_set/varpool_node_set to be
> overengineered
> but they also turned out to be quite ineffective since we do quite a
> lot of
> queries into them during stremaing out.
> 
> This patch moves them to pointer_map, like I did for streamer cache.
> While
> doing so I needed to get the structure out of GGC memory since
> pointer_map is
> not ggc firendly. This is not a deal at all, because the sets can only
> point to
> live cgraph/varpool entries anyway. Pointing to removed ones would lead
> to
> spectacular failures in any case.
> 
> Bootstrapped/regtested x86_64-linux, OK?
> 
> Honza
> 
>       * cgraph.h (cgraph_node_set_def, varpool_node_set_def): Move out
> of GTY;
>       replace hash by pointer map.
>       (cgraph_node_set_element_def, cgraph_node_set_element,
>       const_cgraph_node_set_element, varpool_node_set_element_def,
>       varpool_node_set_element, const_varpool_node_set_element):
> Remove.
>       (free_cgraph_node_set, free_varpool_node_set): New function.
>       (cgraph_node_set_size, varpool_node_set_size): Use vector size.
>       * tree-emutls.c: Free varpool node set.
>       * ipa-utils.c (cgraph_node_set_new, cgraph_node_set_add,
>       cgraph_node_set_remove, cgraph_node_set_find,
> dump_cgraph_node_set,
>       debug_cgraph_node_set, free_cgraph_node_set,
> varpool_node_set_new,
>       varpool_node_set_add, varpool_node_set_remove,
> varpool_node_set_find,
>       dump_varpool_node_set, free_varpool_node_set,
> debug_varpool_node_set):
>       Move here from ipa.c; implement using pointer_map
>       * ipa.c (cgraph_node_set_new, cgraph_node_set_add,
>       cgraph_node_set_remove, cgraph_node_set_find,
> dump_cgraph_node_set,
>       debug_cgraph_node_set, varpool_node_set_new,
>       varpool_node_set_add, varpool_node_set_remove,
> varpool_node_set_find,
>       dump_varpool_node_set, debug_varpool_node_set):
>       Move to ipa-uitls.c.
>       * lto/lto.c (ltrans_partition_def): Remove GTY annotations.
>       (ltrans_partitions): Move to heap.
>       (new_partition): Update.
>       (free_ltrans_partitions): New function.
>       (lto_wpa_write_files): Use it.
>       * passes.c (ipa_write_summaries): Update.

This causes cross and native build of ARM Linux toolchain to fail:

gcc -c   -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wwrite-
strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-
format-attribute -Wold-style-definition -Wc++-compat -fno-common  -
DHAVE_CONFIG_H -I. -Ilto -
I/work/source/gcc -
I/work/source/gcc/lto -
I/work/source/gcc/../include -
I/work/source/gcc/../libcpp/include -
I/work/source/gcc/../libdecnumber -
I/work/source/gcc/../libdecnumber/dpd
-I../libdecnumber
/work/source/gcc/lto/lto.c -o
lto/lto.o
/work/source/gcc/lto/lto.c:1163:
warning: function declaration isn't a prototype
/work/source/gcc/lto/lto.c: In
function 'free_ltrans_partitions':
/work/source/gcc/lto/lto.c:1163:
warning: old-style function definition
/work/source/gcc/lto/lto.c:1168:
error: 'struct ltrans_partition_def' has no member named 'cgraph'
/work/source/gcc/lto/lto.c:1168:
error: 'set' undeclared (first use in this function)
/work/source/gcc/lto/lto.c:1168:
error: (Each undeclared identifier is reported only once
/work/source/gcc/lto/lto.c:1168:
error: for each function it appears in.)
/work/source/gcc/lto/lto.c:1171:
warning: implicit declaration of function
'VEC_latrans_partition_heap_free'
make[2]: *** [lto/lto.o] Error 1
make[2]: *** Waiting for unfinished jobs....
rm gcov.pod gfdl.pod cpp.pod fsf-funding.pod gcc.pod
make[2]: Leaving directory `/work/cross-build/trunk-r173334-
thumb/arm-none-linux-gnueabi/obj/gcc1/gcc'
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory `/work/cross-build/trunk-r173334-
thumb/arm-none-linux-gnueabi/obj/gcc1'
make: *** [all] Error 2
+ exit

But I see you fixed it up soon after (r173336), so no action is
required now, but I figured it was worth letting people know anyway.

Cheers,
Ian



Reply via email to