https://bugs.winehq.org/show_bug.cgi?id=38616
Bug ID: 38616 Summary: Wine 1.7.43 (32-bit) cannot be built by GCC 4.3.2 with -O3 flag. Product: Wine Version: 1.7.43 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: kol@MV8660.spb.edu Distribution: ---
Created attachment 51516 --> https://bugs.winehq.org/attachment.cgi?id=51516 GCC error message
GCC 4.3.2 with the optimization flag -O3 (and also -O2 or -O1) cannot compile 32-bit Wine 1.7.43. An error is occured in "dlls/ntdll/server.c":
server.c: In function 'server_get_unix_fd': server.c:971: error: unable to find a register to spill in class 'GENERAL_REGS'.
The full text of the error message is in the attachment. This is not an issue for Wine 1.7.42 and I found that the regression is caused by the commit
commit 40c912b4bef45099d465ddb9a7cb16f33ec4ed3c Author:: Sebastian Lackner sebastian@fds-team.de Date: Thu, 30 Apr 2015 04:22:53 +0200
ntdll: Use lockfree implementation for get_cached_fd.
If the optimization level is set to -O0 only for "dlls/ntdll/server.c" (by manual editing of "dlls/ntdll/Makefile"), the process of compilation completes successfully. Optimization flags other than -O do not affect the result.
GCC version is 4.3.2 (my system is Fedora 10). Wine is configured with CFLAGS="-mtune=amdfam10 -march=amdfam10 -mfpmath=sse -O3 -ffast-math -msse3 -funroll-all-loops".