diff options
author | dim <dim@FreeBSD.org> | 2015-02-02 20:34:40 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-02-02 20:34:40 +0000 |
commit | fe14cf7eedbcc7ccc867ba5116c3553718d22ecf (patch) | |
tree | 9c796001015fe17ab4322360b2c8a2ba835b9d76 /contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h | |
parent | 8dc847406524920db5b69acab7d3f942c5ea65d3 (diff) | |
download | FreeBSD-src-fe14cf7eedbcc7ccc867ba5116c3553718d22ecf.zip FreeBSD-src-fe14cf7eedbcc7ccc867ba5116c3553718d22ecf.tar.gz |
Pull in r227752 from upstream llvm trunk (by Michael Kuperstein):
[X86] Convert esp-relative movs of function arguments to pushes, step 2
This moves the transformation introduced in r223757 into a separate MI pass.
This allows it to cover many more cases (not only cases where there must be a
reserved call frame), and perform rudimentary call folding. It still doesn't
have a heuristic, so it is enabled only for optsize/minsize, with stack
alignment <= 8, where it ought to be a fairly clear win.
(Re-commit of r227728)
Differential Revision: http://reviews.llvm.org/D6789
This helps to get sys/boot/i386/boot2 below the required size again,
when optimizing with -Oz.
Diffstat (limited to 'contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h')
-rw-r--r-- | contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h b/contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h index b23a744..9fd03a7 100644 --- a/contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h +++ b/contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h @@ -77,6 +77,9 @@ class X86MachineFunctionInfo : public MachineFunctionInfo { unsigned ArgumentStackSize; /// NumLocalDynamics - Number of local-dynamic TLS accesses. unsigned NumLocalDynamics; + /// HasPushSequences - Keeps track of whether this function uses sequences + /// of pushes to pass function parameters. + bool HasPushSequences; private: /// ForwardedMustTailRegParms - A list of virtual and physical registers @@ -97,7 +100,8 @@ public: VarArgsGPOffset(0), VarArgsFPOffset(0), ArgumentStackSize(0), - NumLocalDynamics(0) {} + NumLocalDynamics(0), + HasPushSequences(false) {} explicit X86MachineFunctionInfo(MachineFunction &MF) : ForceFramePointer(false), @@ -113,11 +117,15 @@ public: VarArgsGPOffset(0), VarArgsFPOffset(0), ArgumentStackSize(0), - NumLocalDynamics(0) {} + NumLocalDynamics(0), + HasPushSequences(false) {} bool getForceFramePointer() const { return ForceFramePointer;} void setForceFramePointer(bool forceFP) { ForceFramePointer = forceFP; } + bool getHasPushSequences() const { return HasPushSequences; } + void setHasPushSequences(bool HasPush) { HasPushSequences = HasPush; } + bool getRestoreBasePointer() const { return RestoreBasePointerOffset!=0; } void setRestoreBasePointer(const MachineFunction *MF); int getRestoreBasePointerOffset() const {return RestoreBasePointerOffset; } |