On Fri, Jul 11, 2014 at 6:41 PM, Gaius Mulley
<gaius.mul...@southwales.ac.uk> wrote:
>
>
> Hello,
>
> I've been looking through tree-ssa-loop-im.c (while hunting down a bug
> in the modula-2 front end) and found a curiosity in
> gcc/tree-ssa-loop-im.c.
>
> It seems that there is dead code in function determine_max_movement
> as mem_ref_in_stmt can never return NULL.

?

static mem_ref_p
mem_ref_in_stmt (gimple stmt)
{
  bool store;
  tree *mem = simple_mem_ref_in_stmt (stmt, &store);
  hashval_t hash;
  mem_ref_p ref;

  if (!mem)
    return NULL;

and simple_mem_ref_in_stmt _can_ return NULL.

Richard.


>
> static mem_ref_p
> mem_ref_in_stmt (gimple stmt)
> {
>   ...
>
>   gcc_assert (ref != NULL);
>   return ref;
> }
>
> so the patch below could logically be applied as the else statement is
> currently unreachable.
>
>
>
> --- tree-ssa-loop-im.c.orig     2014-07-11 16:54:41.000000000 +0100
> +++ tree-ssa-loop-im.c  2014-07-11 16:55:38.000000000 +0100
> @@ -798,21 +798,11 @@
>      {
>        mem_ref_p ref = mem_ref_in_stmt (stmt);
>
> -      if (ref)
> -       {
> -         lim_data->max_loop
> -                 = outermost_indep_loop (lim_data->max_loop, loop, ref);
> -         if (!lim_data->max_loop)
> -           return false;
> -       }
> -      else
> -       {
> -         if ((val = gimple_vuse (stmt)) != NULL_TREE)
> -           {
> -             if (!add_dependency (val, lim_data, loop, false))
> -               return false;
> -           }
> -       }
> +      gcc_assert (ref != NULL);
> +      lim_data->max_loop
> +       = outermost_indep_loop (lim_data->max_loop, loop, ref);
> +      if (!lim_data->max_loop)
> +       return false;
>      }
>
>    lim_data->cost += stmt_cost (stmt);
>
>
> However my question is whether the assert in mem_ref_in_stmt is correct?
> Since the author of determine_max_movement must have thought ref could
> be NULL.
>
> Anyhow, it seems that either the above patch should be applied or the
> 'gcc_assert (ref != NULL);' from mem_ref_p should be removed.
>
> regards,
> Gaius

Reply via email to