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

--- Comment #1 from Yichao Yu <yyc1992 at gmail dot com> ---
Ah, I think this might be the fix for both this issue and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95780 . I'll test more and will
try to submit it later.

```
diff --git a/gcc/multiple_target.c b/gcc/multiple_target.c
index c1cfe8ff978..79a4c87545f 100644
--- a/gcc/multiple_target.c
+++ b/gcc/multiple_target.c
@@ -483,7 +483,7 @@ redirect_to_specific_clone (cgraph_node *node)
                                            DECL_ATTRIBUTES (e->callee->decl));

       /* Function is not calling proper target clone.  */
-      if (!attribute_list_equal (attr_target, attr_target2))
+      if (!attribute_value_equal (attr_target, attr_target2))
        {
          while (fv2->prev != NULL)
            fv2 = fv2->prev;
@@ -494,7 +494,7 @@ redirect_to_specific_clone (cgraph_node *node)
              cgraph_node *callee = fv2->this_node;
              attr_target2 = lookup_attribute ("target",
                                               DECL_ATTRIBUTES (callee->decl));
-             if (attribute_list_equal (attr_target, attr_target2))
+             if (attribute_value_equal (attr_target, attr_target2))
                {
                  e->redirect_callee (callee);
                  cgraph_edge::redirect_call_stmt_to_callee (e);
```

Reply via email to