On Thu, May 19, 2011 at 5:49 PM, Feng LI <nemoking...@gmail.com> wrote: > Hi, > > I'm trying to outline a function and move all basic-blocks in the function > to different child functions. Only left 1 newly created bb in the original > function with newly inserted statements. > > But I got an ICE when gcc call remove_ssa_form for the original function. > I debugged the code, it seems that the ssa names is not removed/released > in the original function even if they are already moved to the newly created > child functions (still in the set of cfun->gimple_df->ssa_names). > > And in coalesce_ssa_name, it will scan for every ssa name and do > something there which I thought probably how the ICE is caused. > > By moving the basic-block to a newly created child function, I'm using > move_sese_region_to_fn (). I'm wondering how could I correctly manage > the ssa names information so that I could solve the problem properly?
That function isn't designed to work on SSA form. You'd have to extend it to properly create new SSA names for the new function. Richard. > Here is the back-trace information. > #0 0x081f3f2e in bitmap_find_bit (head=0x0, bit=4) at ../../gcc/bitmap.c:557 > #1 0x081f415b in bitmap_set_bit (head=0x0, bit=4) at ../../gcc/bitmap.c:643 > #2 0x087c5d6d in set_var_live_on_entry (ssa_name=0xb80ae6e0, > live=0xa2f2808) at ../../gcc/tree-ssa-live.c:984 > #3 0x087c6448 in calculate_live_ranges (map=0xa34b4a0) at > ../../gcc/tree-ssa-live.c:1098 > #4 0x08798322 in coalesce_ssa_name () at ../../gcc/tree-ssa-coalesce.c:1409 > #5 0x08723191 in remove_ssa_form (perform_ter=0 '\0', sa=0x8f731a8) > at ../../gcc/tree-outof-ssa.c:909 > #6 0x08723eb5 in rewrite_out_of_ssa (sa=0x8f731a8) at > ../../gcc/tree-outof-ssa.c:1143 > > Thanks, > Feng >