http://bugs.winehq.org/show_bug.cgi?id=22890
--- Comment #8 from Philip J. Fry dabljuh@dabserver.dyndns.org 2010-05-30 15:17:18 --- Confirming that custom CFLAGS are disabled for wine by default on gentoo. They're available via the use custom-cflags flag. If Wine is not compiled with the custom-cflags useflag, -fomit-frame-pointer would get filtered out.
Not related, but what's the purpose of compiling with custom flags instead of well tested default ones? Does -fomit-frame-pointer really give noticeable performance improvements or is that just a speculation?
I'm going to try to give you the rundown:
The frame pointer is a primarily a debugging facility essentially so the program flow knows what function it was in when it failed. Frame pointers as a debuggers tool are considered obsolete these days, as there are options for debugging available that do not require frame pointers, and are also supported by gcc. Frame pointers occupy a full general purpose register on the cpu during program execution, and furthermore necessitate a lot of avoidable overhead when entering / leaving functions. As a general rule, compiled C++ code can be expected to run 10-25% faster when frame pointers are omitted.
Frame pointers are no longer defaulting to inclusion by any bigger compiler for the x86-64 target architecture, and they haven't been the default for intel / MS compilers for x86 for ages, their omission being part of even the lowest optimization set. I find it regrettable that frame pointers are still enabled by default on gcc 4.4.3 for the x86 architecture even when no absolutely no debugging flags are enabled.
According to oiaohm in the wine chat on freenode (if I understood him properly) the frame pointer is necessary for wine to allow some of the more arcane / hacky features to work, to be specific, support for certain stack-scanning copy protection and anticheat mechanisms.
It may or may not be possible to get those features into wine without the use of a frame pointer to enhance performance, but currently some programs will simply not work when Wine is compiled with -fomit-frame-pointer.