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.

Reply via email to