VN_INFO might be NULL in PRE
Zhenqiang Chen
zhenqiang.chen@linaro.org
Tue Oct 23 05:36:00 GMT 2012
Hi,
PRE bases on the result of value numbering (run_scc_vn). At the end,
it free_scc_vn. But before free_scc_vn, it might call cleanup_tree_cfg
();
if (do_eh_cleanup || do_ab_cleanup)
cleanup_tree_cfg ();
cleanup_tree_cfg might call make_ssa_name which might reuse some
"name" from the FREE_SSANAMES list. If the VN_INFO of the "name" is
NULL, free_scc_vn will "Segmentation fault". PR 54902
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54902) shows a real case.
The attached log shows the gdb backtrace to create a new ssa name.
Here is function VN_INFO:
vn_ssa_aux_t
VN_INFO (tree name)
{
vn_ssa_aux_t res = VEC_index (vn_ssa_aux_t, vn_ssa_aux_table,
SSA_NAME_VERSION (name));
gcc_checking_assert (res);
return res;
}
Can we make sure "res" is not NULL for the new ssa name?
In trunk, Richard's "Make gsi_remove return whether EH cleanup is
required" patches in r186159 and r186164 make "do_eh_cleanup" to
false. So cleanup_tree_cfg is not called in PRE. Then no new ssa name
will be created.
Does the Richard's patch fix the root cause?
Thanks!
-Zhenqiang
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bt.log
Type: application/octet-stream
Size: 4013 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20121023/c9001a4f/attachment.obj>
More information about the Gcc
mailing list