https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83926
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-01-30 Ever confirmed|0 |1 --- Comment #8 from Peter Bergner <bergner at gcc dot gnu.org> --- A minimal test case that fails with -O[123]: [bergner@makalu-lp1 PR83926]$ cat pr83926.i __attribute__ ((altivec(vector__))) long long foo (__attribute__ ((altivec(vector__))) long long a, __attribute__ ((altivec(vector__))) long long b) { return __builtin_vec_div (a, b); } [bergner@makalu-lp1 PR83926]$ /home/bergner/gcc/build/gcc-fsf-mainline-pr83926-debug/gcc/xgcc -B/home/bergner/gcc/build/gcc-fsf-mainline-pr83926-debug/gcc -S -mcpu=power8 -O1 -m32 -mno-fold-gimple pr83926.i gimple folding of rs6000 builtins has been disabled. pr83926.i: In function ‘foo’: pr83926.i:6:1: error: unrecognizable insn: } ^ (insn 16 15 17 2 (set (reg:DI 127) (div:DI (reg:DI 125) (reg:DI 126))) "pr83926.i":6 -1 (nil)) during RTL pass: subreg2 pr83926.i:6:1: internal compiler error: in extract_insn, at recog.c:2304 0x10ddd69f _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /home/bergner/gcc/gcc-fsf-mainline-pr83926/gcc/rtl-error.c:108 In reply to Segher's suggestion of doing what the 32-bit DImode divides do, they end up emitting calls to __divdi3().