On Tue, Mar 05, 2013 at 12:51:09PM +0100, Richard Biener wrote:
> VN now inserts all sorts of calls into the references hashtable,
> not only those which produce a value. This results in missing
> initializations of ->value_id which eventually PRE ends up
> accessing.
>
> The following fixes that.
>
> Bootstrap and regtest pending on x86_64-unknown-linux-gnu.
>
> Richard.
>
> 2013-03-05 Richard Biener <[email protected]>
>
> * tree-ssa-sccvn.c (set_value_id_for_result): For a NULL
> result set a new value-id.
>
> --- gcc/tree-ssa-sccvn.c (revision 196451)
> +++ gcc/tree-ssa-sccvn.c (working copy)
> @@ -3954,7 +3962,7 @@ free_scc_vn (void)
> XDELETE (optimistic_info);
> }
>
> -/* Set *ID if we computed something useful in RESULT. */
> +/* Set *ID according to RESULT. */
>
> static void
> set_value_id_for_result (tree result, unsigned int *id)
> @@ -3966,6 +3974,8 @@ set_value_id_for_result (tree result, un
> else if (is_gimple_min_invariant (result))
> *id = get_or_alloc_constant_value_id (result);
This still won't initialize *id if result is non-NULL, but isn't
SSA_NAME nor is_gimple_min_invariant. Can't you do the same for that case
too, just in case (perhaps we can't trigger that right now, but still
it would make me feel safer about that).
> }
> + else
> + *id = get_next_value_id ();
> }
>
> /* Set the value ids in the valid hash tables. */
Otherwise looks good to me, thanks.
Jakub