https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84912
--- Comment #3 from Peter Bergner <bergner at gcc dot gnu.org> --- The following patch changes the ICE to an error: [bergner@makalu-lp1 PR84912]$ cat divde.i long div_de (long a, long b) { return __builtin_divde (a, b); } [bergner@makalu-lp1 PR84912]$ /home/bergner/gcc/build/gcc-fsf-mainline-mcpu-debug/./gcc/xgcc -B/home/bergner/gcc/build/gcc-fsf-mainline-mcpu-debug/./gcc/ -m32 -O1 -S -mcpu=power7 divde.i divde.i: In function ‘div_de’: divde.i:4:10: error: builtin ‘__builtin_divde’ is only valid in 64-bit mode return __builtin_divde (a, b); ^~~~~~~~~~~~~~~~~~~~~~ Ditto for the other builtins. Index: rs6000.c =================================================================== --- rs6000.c (revision 258722) +++ rs6000.c (working copy) @@ -14076,6 +14076,21 @@ rs6000_expand_binop_builtin (enum insn_c if (arg0 == error_mark_node || arg1 == error_mark_node) return const0_rtx; + if (!TARGET_POWERPC64 + && (icode == CODE_FOR_dive_di + || icode == CODE_FOR_diveo_di + || icode == CODE_FOR_diveu_di + || icode == CODE_FOR_diveuo_di)) + { + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); + bool nonvoid = TREE_TYPE (TREE_TYPE (fndecl)) != void_type_node; + enum rs6000_builtins fcode = (enum rs6000_builtins) DECL_FUNCTION_CODE (fndecl); + size_t uns_fcode = (size_t)fcode; + const char *name = rs6000_builtin_info[uns_fcode].name; + error ("builtin %qs is only valid in 64-bit mode", name); + return const0_rtx; + } + if (icode == CODE_FOR_altivec_vcfux || icode == CODE_FOR_altivec_vcfsx || icode == CODE_FOR_altivec_vctsxs