https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77311
Bug ID: 77311 Summary: bfin: error: unable to find a register to spill in class 'CCREGS' Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: wbx at openadk dot org Target Milestone: --- Created attachment 39480 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39480&action=edit ffmpeg preprocessed file When compiling either ffmpeg or binutils for bfin with gcc 6.1.0 you get something like that: CC libavcodec/huffyuvencdsp.o In file included from libavcodec/hevcdsp.c:111:0: libavcodec/hevcdsp_template.c: In function 'hevc_v_loop_filter_luma_8': libavcodec/hevcdsp_template.c:1678:1: error: unable to find a register to spill in class 'CCREGS' } ^ libavcodec/hevcdsp_template.c:1678:1: error: this is the insn: (insn 488 474 719 20 (set (reg:BI 15 FP [549]) (eq:BI (reg/v:SI 15 FP [orig:98 no_p ] [98]) (const_int 0 [0]))) libavcodec/hevcdsp_template.c:1596 118 {compare_eq} (expr_list:REG_DEAD (reg/v:SI 15 FP [orig:98 no_p ] [98]) (nil))) libavcodec/hevcdsp_template.c:1678: confused by earlier errors, bailing out common.mak:57: recipe for target 'libavcodec/hevcdsp.o' failed make[1]: *** [libavcodec/hevcdsp.o] Error 1 make[1]: *** Waiting for unfinished jobs.... It seems as some kind of gcc optimization bug with Os/O2/O3, as the problematic code can be compiled with O1 without any problem. Problem found via Buildroot autobuilders: http://autobuild.buildroot.net/results/111/1118d568959006b7f973761884fd3f4b63be19b1/ Preprocessed file attached.