------- Comment #15 from dberlin at gcc dot gnu dot org 2007-07-14 02:04 ------- Subject: Re: [4.3 regression] ICE in set_ssa_val_to, at tree-ssa-sccvn.c:1022
On 13 Jul 2007 20:43:37 -0000, ebotcazou at gcc dot gnu dot org <[EMAIL PROTECTED]> wrote: > > > ------- Comment #14 from ebotcazou at gcc dot gnu dot org 2007-07-13 20:43 > ------- > > Instead, where we init everything to VN_TOP, init everything with > > SSA_NAME_OCCURS_IN_ABNORMAL_PHI to itself instead of VN_TOP. > > @@ -1912,13 +1912,16 @@ init_scc_vn (void) > VN_TOP = create_tmp_var_raw (void_type_node, "vn_top"); > > /* Create the VN_INFO structures, and initialize value numbers to > - TOP. */ > + TOP, except for SSA names appearing in abnormal PHI nodes. */ > for (i = 0; i < num_ssa_names; i++) > { > tree name = ssa_name (i); > if (name) > { > - VN_INFO_GET (name)->valnum = VN_TOP; > + if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name)) > + VN_INFO_GET (name)->valnum = name; > + else > + VN_INFO_GET (name)->valnum = VN_TOP; > VN_INFO (name)->expr = name; > } > } > > is not sufficient to eliminate all the failures. I get the same assertion > failure for non-degenerate PHI nodes without SSA_NAME_OCCURS_IN_ABNORMAL_PHI > anywhere, all operands having SSA_VAL set to VN_TOP. Top-level function too. Change the assert to allow to == VN_TOP. It can happen when we have aliasing issues, and we believe some piece of memory/a value to be truly undefined. This is what is happening in your case, and since your case is legal, we must allow it. It's likely a bug in the rest of the compiler, however, since we should almost *never* end up with bare NMT's like that. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32705