diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1a12991a86fa..fbb50d0a91bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 2008-09-15 Jakub Jelinek + * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release + in every call starting with the second one, instead of only when + alias_bitmap_obstack.elements != NULL. + + * tree-predcom.c (filter_suitable_components): Free all refs in + act->refs vector before calling release_component. + (add_ref_to_chain): Free ref if not adding it to chain->refs. + + * tree-data-ref.c (free_subscripts): Free all subscript objects. + + * tree-loop-linear.c (linear_transform_loops): Initialize + lambda_obstack only after calling perfect_loop_nest_depth. + Goto free_and_continue instead of just continue for later failures. + PR middle-end/37479 * doc/invoke.texi: Document -fno-dwarf2-cfi-asm. diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 42a54312bdf7..adea68ea4f67 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -2067,6 +2067,7 @@ init_alias_info (void) struct alias_info *ai; referenced_var_iterator rvi; tree var; + static bool alias_bitmap_obstack_initialized; ai = XCNEW (struct alias_info); ai->ssa_names_visited = sbitmap_alloc (num_ssa_names); @@ -2094,9 +2095,10 @@ init_alias_info (void) /* Next time, we will need to reset alias information. */ cfun->gimple_df->aliases_computed_p = true; - if (alias_bitmap_obstack.elements != NULL) + if (alias_bitmap_obstack_initialized) bitmap_obstack_release (&alias_bitmap_obstack); bitmap_obstack_initialize (&alias_bitmap_obstack); + alias_bitmap_obstack_initialized = true; return ai; }