https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90648
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Priority|P3 |P2 --- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> --- The following works around the broken transient state, but it's of course not a full fix (but the best we can do here without to resorting to the global built-in decls tables which we do not do in other related code). I'll leave things to the frontend folks here, I'm not sure why the non-prototype copysignf128 has to shadow the builtin signature? Index: gcc/genmatch.c =================================================================== --- gcc/genmatch.c (revision 271803) +++ gcc/genmatch.c (working copy) @@ -3099,10 +3099,12 @@ dt_node::gen_kids_1 (FILE *f, int indent gcc_assert (e->operation->kind == id_base::FN); fprintf_indent (f, indent, "case %s:\n", e->operation->id); - fprintf_indent (f, indent, " {\n"); - generic_fns[j]->gen (f, indent + 4, false); - fprintf_indent (f, indent, " break;\n"); - fprintf_indent (f, indent, " }\n"); + fprintf_indent (f, indent, " if (call_expr_nargs (%s) >= %d)\n" + " {\n", + kid_opname, e->ops.length ()); + generic_fns[j]->gen (f, indent + 6, false); + fprintf_indent (f, indent, " }\n"); + fprintf_indent (f, indent, " break;\n"); } fprintf_indent (f, indent, "default:;\n");