Dear all, I am currently updating a pass that was made for gcc-4.6.*, so that it works for gcc.4.7.2.
In the pass for gcc-4.6.*, a code fragment from tree-ssa-structalias.c was picked up and used. Given below is the fragment taken form create_function_info_for () . This fragment was used to create variable information for the function and it was picked up to perform a similar operation in the added pass as well. But in gcc-4.7.2 some changes are introduced in the fragment. The code given below shows the changes that have been introduced in create_function_info_for () of tree-ssa-structalias.c in gcc-4.7.2 along with the original code in the comments. /* Add one representative for all further args. */ if (is_varargs) { varinfo_t argvi; const char *newname; char *tempname; tree decl; asprintf (&tempname, "%s.varargs", name); newname = ggc_strdup (tempname); free (tempname); /* We need sth that can be pointed to for va_start. */ /**************** CHANGED CODE in GCC-4.7.2 ***************/ decl = build_fake_var_decl (ptr_type_node); /************ ORIGINAL CODE in GCC-4.6.2 ******************* /* decl = create_tmp_var_raw (ptr_type_node, name); get_var_ann (decl); */ argvi = new_var_info (decl, newname); argvi->offset = fi_parm_base + num_args; argvi->size = ~0; argvi->is_full_var = true; argvi->is_heap_var = true; argvi->fullsize = vi->fullsize; gcc_assert (prev_vi->offset < argvi->offset); prev_vi->next = argvi; prev_vi = argvi; } return vi; So I made the same changes in the pass where this fragment was used. But after making the changes the pass is now giving an "internal compiler error" and a "segmentation fault" at runtime. After debugging I could narrow it down to the function build_fake_var_decl() and to be specific at the memory allocation statement highlighted below. tree build_fake_var_decl (tree type) { /************************ My debugging showed that the control came here *********************/ tree decl = (tree) XOBNEW (&fake_var_decl_obstack, struct tree_var_decl); /************************ But did not come here **********************************************************/ memset (decl, 0, sizeof (struct tree_var_decl)); TREE_SET_CODE (decl, VAR_DECL); TREE_TYPE (decl) = type; DECL_UID (decl) = allocate_decl_uid (); SET_DECL_PT_UID (decl, -1); layout_decl (decl, 0); return decl; } The builf_fake_var_decl() function is a gcc function defined in tree-ssa-structalias.c. To be able to use it in my pass, I removed the keyword static in its definition. I cannot figure out what can possibly cause this error in the XOBNEW function. Please help!!! Sudakshina Das