https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88909
Bug ID: 88909 Summary: struct builtin_description doesn't support ix86_isa_flags2 Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: crazylht at gmail dot com, ubizjak at gmail dot com Target Milestone: --- Target: i386,x86-64 There are struct builtin_description { const HOST_WIDE_INT mask; const enum insn_code icode; const char *const name; const enum ix86_builtins code; const enum rtx_code comparison; const int flag; }; Since "mask" is used for both ix86_isa_flags and ix86_isa_flags2, we wind up with BDESC (OPTION_MASK_ISA_PTWRITE, CODE_FOR_ptwritedi, "__builtin_ia32_ptwrite64", IX86_BUILTIN_PTWRITE64, UNKNOWN, (int) VOID_FTYPE_UINT64) and static inline tree def_builtin2 (HOST_WIDE_INT mask, const char *name, enum ix86_builtin_func_type tcode, enum ix86_builtins code) { tree decl = NULL_TREE; if (tcode == VOID_FTYPE_UINT64) { if (!TARGET_64BIT) return decl; ix86_builtins_isa[(int) code].isa = OPTION_MASK_ISA_64BIT; } ix86_builtins_isa[(int) code].isa2 = mask; We should add "const HOST_WIDE_INT mask2;" to struct builtin_description to handle it properly.