https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91505
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> --- This should fix it: diff --git a/gcc/attribs.c b/gcc/attribs.c index b89be5834de..90055a612b9 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -1525,7 +1525,15 @@ duplicate_one_attribute (tree *attrs, tree attr, const char *name) void copy_attributes_to_builtin (tree decl) { - tree b = builtin_decl_explicit (DECL_FUNCTION_CODE (decl)); + int fcode; + if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL) + fcode = DECL_FUNCTION_CODE (decl); + else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD) + fcode = DECL_MD_FUNCTION_CODE (decl); + else + fcode = DECL_FE_FUNCTION_CODE (decl); + + tree b = builtin_decl_explicit (static_cast<enum built_in_function>(fcode)); if (b) duplicate_one_attribute (&DECL_ATTRIBUTES (b), DECL_ATTRIBUTES (decl), "omp declare simd");