[X86] When optimizing for minsize, use POP for small post-call stack clean-up
authorMichael Kuperstein <michael.m.kuperstein@intel.com>
Tue, 11 Aug 2015 08:48:48 +0000 (08:48 +0000)
committerMichael Kuperstein <michael.m.kuperstein@intel.com>
Tue, 11 Aug 2015 08:48:48 +0000 (08:48 +0000)
commit7337ee23d8ee9864d6b5f4140aaa56cf68388361
treec1cc309ab4a2552a07a71045e91ba535f9374ed0
parent82814f63c035de29b37485d14749f4ddfb7d10d5
[X86] When optimizing for minsize, use POP for small post-call stack clean-up

When optimizing for size, replace "addl $4, %esp" and "addl $8, %esp"
following a call by one or two pops, respectively. We don't try to do it in
general, but only when the stack adjustment immediately follows a call - which
is the most common case.

That allows taking a short-cut when trying to find a free register to pop into,
instead of a full-blown liveness check. If the adjustment immediately follows a
call, then every register the call clobbers but doesn't define should be dead at
that point, and can be used.

Differential Revision: http://reviews.llvm.org/D11749

llvm-svn: 244578
llvm/lib/Target/X86/X86FrameLowering.cpp
llvm/lib/Target/X86/X86FrameLowering.h
llvm/test/CodeGen/X86/fold-push.ll
llvm/test/CodeGen/X86/pop-stack-cleanup.ll [new file with mode: 0644]