This is the mail archive of the
mailing list for the GCC project.
Re: Can shrink-wrapping ever move prologue past an ASM statement?
- From: Jeff Law <law at redhat dot com>
- To: Josh Poimboeuf <jpoimboe at redhat dot com>, Segher Boessenkool <segher at kernel dot crashing dot org>
- Cc: GCC Mailing List <gcc at gcc dot gnu dot org>, Vojtech Pavlik <vojtech at suse dot cz>
- Date: Wed, 08 Jul 2015 15:15:12 -0600
- Subject: Re: Can shrink-wrapping ever move prologue past an ASM statement?
- Authentication-results: sourceware.org; auth=none
- References: <20150707175349 dot GA2325 at virgil dot suse dot cz> <20150707184415 dot GB13004 at gate dot crashing dot org> <20150708092309 dot GB2325 at virgil dot suse dot cz> <20150708103631 dot GA23975 at gate dot crashing dot org> <20150708162234 dot GB4687 at treble dot redhat dot com> <20150708205111 dot GD4687 at treble dot redhat dot com>
On 07/08/2015 02:51 PM, Josh Poimboeuf wrote:
Given that SP isn't subject to register allocation, I'd expect it's
fine. Note that some folks have (loudly) requested that GCC issue an
error if an asm tries to clobber sp.
On Wed, Jul 08, 2015 at 11:22:34AM -0500, Josh Poimboeuf wrote:
On Wed, Jul 08, 2015 at 05:36:31AM -0500, Segher Boessenkool wrote:
On Wed, Jul 08, 2015 at 11:23:09AM +0200, Martin Jambor wrote:
For other archs, e.g. x86-64, you can do
register void *sp asm("%sp");
asm volatile("call func" : "+r"(sp));
I've found that putting "sp" in the clobber list also seems to work:
asm volatile("call func" : : : "sp");
This syntax is nicer because it doesn't need a local variable associated
with the register. Do you see any issues with this approach?
The call doesn't actually clobber the stack pointer does it? ISTM that
a use of sp makes more sense and is better "future proof'd" than