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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that the type of the GIMPLE_ASM constraint strings isn't noted
by free lang data type discovery.

Either:
--- gcc/tree.c.jj       2019-08-27 12:26:37.436912167 +0200
+++ gcc/tree.c  2019-08-28 17:57:13.823742284 +0200
@@ -5848,7 +5848,10 @@ find_decls_types_r (tree *tp, int *ws, v
   class free_lang_data_d *fld = (class free_lang_data_d *) data;

   if (TREE_CODE (t) == TREE_LIST)
-    return NULL_TREE;
+    {
+      walk_tree (&TREE_PURPOSE (t), find_decls_types_r, fld, &fld->pset);
+      return NULL_TREE;
+    }

   /* Language specific nodes will be removed, so there is no need
      to gather anything under them.  */
or:
--- gcc/tree.c.jj       2019-08-27 12:26:37.436912167 +0200
+++ gcc/tree.c  2019-08-28 18:02:58.669748627 +0200
@@ -12307,6 +12307,7 @@ walk_tree_1 (tree *tp, walk_tree_fn func

     case TREE_LIST:
       WALK_SUBTREE (TREE_VALUE (*tp));
+      WALK_SUBTREE (TREE_PURPOSE (*tp));
       WALK_SUBTREE_TAIL (TREE_CHAIN (*tp));
       break;

fixes this, the latter change looks more correct to me, but it will be as well
more risky.

Reply via email to