From 12f78d8bed049278229b24c9f0b7f97468fee5c5 Mon Sep 17 00:00:00 2001 From: Kyrylo Tkachov Date: Fri, 16 Aug 2019 09:32:36 +0000 Subject: [PATCH] [gensupport] PR 91255: Do not error out immediately on set_attr_alternative with define_subst I'm trying to add a define_subst use in the arm backend but am getting many build errors complaining about: `set_attr_alternative' is unsupported by `define_subst' Looking at the gensupport.c code it iterates over all define_insns and errors if any of them have set_attr_alternative. The usecase I'm targetting doesn't involve patterns with set_attr_alternative, so I would like to make the define_subst handling more robust to only error out if the define_subst is actually attempted on a set_attr_alternative. This patch produces the error only if the set_attr_alternative attr matches the subst name. This allows a build of the arm backend with a define_subst usage to succeed. PR other/91255 * gensupport.c (has_subst_attribute): Error out on set_attr_alternative only if subst_name matches curr_attr string. From-SVN: r274564 --- gcc/ChangeLog | 6 ++++++ gcc/gensupport.c | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e447aabb367..6bd5e9b370b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-08-16 Kyrylo Tkachov + + PR other/91255 + * gensupport.c (has_subst_attribute): Error out on set_attr_alternative + only if subst_name matches curr_attr string. + 2019-08-16 Richard Biener * tree-ssa-forwprop.c (simplify_builtin_call): Do not remove diff --git a/gcc/gensupport.c b/gcc/gensupport.c index 1aab7119901..c64f683bc5c 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -788,9 +788,10 @@ has_subst_attribute (class queue_elem *elem, class queue_elem *subst_elem) return false; case SET_ATTR_ALTERNATIVE: - error_at (elem->loc, - "%s: `set_attr_alternative' is unsupported by " - "`define_subst'", XSTR (elem->data, 0)); + if (strcmp (XSTR (cur_attr, 0), subst_name) == 0) + error_at (elem->loc, + "%s: `set_attr_alternative' is unsupported by " + "`define_subst'", XSTR (elem->data, 0)); return false; -- 2.30.2