A few files generate the following error message: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' There are a few loosely related bugs here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13850 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32267 The problem is that ffmpeg uses heavily optimized assembly routines. On X86 registers are not plenty, so a single missing one causes problems. The ffmpeg ebuild has therefore put -fomit-frame-pointer into the compiler flags to make BP available. Since for prefixed portage tc-arch changed from x86 to x86-linux, the macro the ebuild needs to be modified. Activation of -fomit-frame-pointer should happen automatically with -O* according to "man gcc", but did not with -O2 on my machine. My CFLAGS and CXXFLAGS are: "-march=prescott -O2 -pipe -mfpmath=sse -msse3 " The Reproducible: Always Steps to Reproduce: 1. Go on x86 arch 2. Compile ffmpeg without -fomit-frame-pointer
Created attachment 186310 [details, diff] Modification to the ffmpeg ebuild that should fix the problem This modification will make the -fomit-frame-pointer compiler flag added, whenever we are on x86 (standard portage) or x86-* (tested on x86-macos with prefixed portage).
Thanks for your in-depth explanation! I didn't hit the problem on x86-solaris, probably because I use -O3, and FSF gcc, but I see no harm in your patch. I committed it to 0.5, do you need it in the 0.4_p* versions too? Please reopen if so.