On Thu, Jul 07, 2016 at 12:32:02PM -0400, Jason Merrill wrote:
> Hmm, I wonder if walk_tree_1 should walk into DECL_EXPR like it does into
> BIND_EXPR_VARS.  But your patch is OK.

Well, walk_tree_1 does walk into DECL_EXPR, but cp_genericize_r says
*walk_subtrees on the VAR_DECL inside of it.
When walking BIND_EXPR_VARS, it doesn't walk the vars themselves, but
            /* Walk the DECL_INITIAL and DECL_SIZE.  We don't want to walk
               into declarations that are just mentioned, rather than
               declared; they don't really belong to this part of the tree.
               And, we can see cycles: the initializer for a declaration
               can refer to the declaration itself.  */
            WALK_SUBTREE (DECL_INITIAL (decl));
            WALK_SUBTREE (DECL_SIZE (decl));
            WALK_SUBTREE (DECL_SIZE_UNIT (decl));
Do you mean walk_tree_1 should walk DECL_INITIAL/DECL_SIZE/DECL_SIZE_UNIT
of the var mentioned in the DECL_EXPR?  Then for many vars (which are both
mentioned in BIND_EXPR_VARS and in DECL_EXPR) it would walk them twice.

        Jakub

Reply via email to