http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56807
--- Comment #24 from Kai Tietz <ktietz at gcc dot gnu.org> --- (In reply to Anton Mitrofanov from comment #23) > >Is it possible to write a test with eax_live == true and r10_live == true? > I am really dunno. As I said I can't write sample which will trigger it > (that is why it is only comment and not new bug report). But this code path > exist so probably someone suggested that it can be triggered (otherwise what > for to write it instead of some assert)? > > >That piece of code is only trigged by -mstack-arg-probe, which is specific > >to Windows That isn't true. -mstack-arg-probe is valid for all i386 (x86 and x86_64) targets. > Can it really be used only for Windows target? I am not very good with gcc > on other targets so don't know if it have any effect on linux or anything > other. Well, it can be used on other targets too. Nevertheless you need the for this a implementation of the stack-probing routines (see here libgcc/config/i386 assembly-routine). The interesting part is that this issue is just a x86_64 issue. It is for sure no Windows issue, as for Windows targets eax_live and r10_live never can be both true. The r10_live can just get true for x86_64, but not for x64 Windows, due drap-register isn't allowed for 64-bit Winodws targets. The eax_live can't get true for 64-bit (Not quite sure if we need actually this limitation). Only for 32-bit it might be set. For x86_64 targets (using amd64 ABI) it might be possible when drap-register is used together with -mstack-arg-probe (which is by default not supported). So this case is in general hard to construct, and will be seen in real-live pretty unlikely.