On Thu, Oct 3, 2019 at 5:18 PM Bernd Edlinger <bernd.edlin...@hotmail.de> wrote:
>
> Hi,
>
> this fixes -Wshadow=local warnings in genmatch.c itself and in generated
> files as well.
>
> The non-trivial part of this patch is renaming the generated local variables
> in the gimple-match.c, to use different names for variables in inner blocks,
> and use a depth index to access the right value.  Also this uses variables
> in the reserved name space, to avoid using the same names (e.g. res, op0, op1)
> that are used in existing .md files.
>
> So I rename:
>
> ops%d -> _o%d
> op%d -> _p%d
> o%u%u -> _q%u%u
> res -> _r%d (in gen_transform)
> res -> _r (in dt_simplify::gen_1)
> def -> _a%d (if gimple_assign)
> def -> _c%d (if gimple_call)
> def_stmt -> _d%d
>
> leaving res_ops, res_op, capture for later, since they are not likely to
> be used in .md files.
>
>
> Bootstrapped and reg-tested on x86_64-pc-linux-gnu.
> Is it OK for trunk?

Jumping on one set of hunks:

@@ -2270,42 +2270,42 @@ capture_info::walk_result (operand *o, bool condit
          walk_result (e->ops[i], cond_p, result);
        }
     }
-  else if (if_expr *e = dyn_cast <if_expr *> (o))
+  else if (if_expr *e1 = dyn_cast <if_expr *> (o))
     {
...
+  else if (with_expr *e2 = dyn_cast <with_expr *> (o))
     {
-      bool res = (e->subexpr == result);
..

this seems like a bogus -Wshadow if it really warns?  The change above makes
the code ugly IMHO.  Indeed:

> g++-8 t.C -Wshadow=local
t.C: In function ‘void foo(int)’:
t.C:5:16: warning: declaration of ‘j’ shadows a previous local [-Wshadow=local]
   else if (int j = 1)
                ^
t.C:3:11: note: shadowed declaration is here
   if (int j = i)
           ^

for

void foo (int i)
{
  if (int j = i)
    ;
  else if (int j = 1)
    ;
}

and that's a bug.  Ugh.

void foo (int i)
{
  if (int j = i)
    ;
  else
    j = 1;
}

really compiles :/  I wasn't aware of that semantic and it's totally
non-obvious to me... ICK.  Btw, rather than e1,e2,e3... I'd
then have used e (expr *), ie (if_expr *) and we (with_expr).
1 2 and 3 are so arbitrary.

The rest of the patch looks OK to me, the above just caught my eye
so OK for trunk with e, ie, we.

Thanks,
Richard.

>
>
> Thanks
> Bernd.
>

Reply via email to