Il 19/08/2012 18:55, Richard Guenther ha scritto: >> > Initially I had one obstack per struct graph, which was better than using >> > XNEW for every edge, but still obstack_init() called from new_graph() was >> > too frequent. >> > >> > So in this iteration of the patch the obstack is static global, initialised >> > once and never freed. Please advise on whether this is acceptable, and also >> > where I should initialise the obstack once, and avoid checking if it's NULL >> > in every use. >> > >> > Minor speed gains (couple of ms), tested with pre-C++ conversion snapshot, >> > I'll retest soon and post update. > Either an obstack per graph or the ability to specify an obstack for > allocation. > A global obstack with global lifetime is bad IMHO.
Dimitrios's patch has a per-file obstack with per-pass lifetime, which I think is the right solution---but putting graph_obstack as a static variable in graphds.h is uuuugly. You can just move the declaration to each file separately, and give it a better name perhaps (e.g. loop_graph_obstack). Paolo