https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77931

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2016-10-11
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, we're hitting /* Ugh */ which shouldn't really happen.  BLOCK_VARS should
be a sub-chain of gimple_bind_vars.  It looks like BLOCK_VARS in this case
has a common sub-chain with gimple_bind_vars instead...

  /* Scrap DECL_CHAIN up to BLOCK_VARS to ease GC after we no longer
     need gimple_bind_vars.  */
  tree next;
  tree end = NULL_TREE;
  if (gimple_bind_block (stmt))
    end = BLOCK_VARS (gimple_bind_block (stmt));
  for (tree var = gimple_bind_vars (stmt); var != end; var = next)
    {
      /* Ugh, something is violating the constraint that BLOCK_VARS
         is a sub-chain of gimple_bind_vars.  */
      if (! var)
        break;
      next = DECL_CHAIN (var);
      DECL_CHAIN (var) = NULL_TREE;
    }

and we have

gimple_bind_vars: c1D.2424 varD.2425 inaD.2426 yD.2460 clD.2462 
BLOCK_VARS: <<< Unknown tree: imported_decl >>> <<< Unknown tree: imported_decl
>>> c1D.2424 varD.2425 inaD.2426 yD.2460 clD.2462

Reply via email to