------- 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

Reply via email to