Kyrill Tkachov <kyrylo.tkac...@foss.arm.com> writes: > Hi all, > > 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. > > Bootstrapped and tested on arm-none-linux-gnueabihf and x86_64-linux-gnu. > > Ok for trunk?
OK, thanks. Richard > > Thanks, > Kyrill > > 2019-08-15 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > PR other/91255 > * gensupport.c (has_subst_attribute): Error out on set_attr_alternative > only if subst_name matches curr_attr string. > > 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; > >