History log of /external/llvm/lib/Target/X86/X86FrameLowering.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4c5e43da7792f75567b693105cc53e3f1992ad98 08-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master llvm for rebase to r233350

Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
faf1415c4fa88b6233bca488b8ac3bb8e6a73c72 24-Oct-2013 Yaron Keren <yaron.keren@gmail.com> (this is a corrected patch)

Calling _chkstk is required on ELF as well as COFF on Windows. Without
_chkstk, functions requiring large stack crash in initialization code.

Previous code tested for COFF format but not Mach-O and this patch modifies
the code to test for Windows OS (both Windows target and MingW target)
but not Mach-O object format: Looks like macho environment was used to
build some EFI code.

Credits to Andrew MacPherson.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193289 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
615f561407c83e29356f34c057279e87d903c9f1 23-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert "Calling _chkstk is required on ELF as well as COFF on Windows. Without _chkstk functions requiring large stack crash in initialization code. Previous code tested for COFF format but not Mach-O and this patch modifies the code to test for Windows."

This reverts commit r193263.

It is causing CodeGen/X86/mingw-alloca.ll to fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
1e0437804c084dabda8894508f5867fdfb4df915 23-Oct-2013 Yaron Keren <yaron.keren@gmail.com> Calling _chkstk is required on ELF as well as COFF on Windows.
Without _chkstk functions requiring large stack crash in
initialization code. Previous code tested for COFF format but
not Mach-O and this patch modifies the code to test for Windows.

Credits to Andrew MacPherson.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
9c7448c8d337fde57a75f58baab8fed6afad0a10 10-Sep-2013 Bill Wendling <isanbard@gmail.com> Revert r190366. It was breaking build bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
5ebe6ccf658d829f9e3b7bb2ee2a5c4c392c2a7d 10-Sep-2013 Bill Wendling <isanbard@gmail.com> Use a default value for the prologue's debug location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b9daaa02a24afb2027dc999258dcdb6ec4fbbc9a 03-Sep-2013 Bill Wendling <isanbard@gmail.com> WIP: Refactor some code so that it can be called by more than just one method. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189849 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e4272979978951bece0141cdd9f6a4481b34656f 15-Aug-2013 Bill Wendling <isanbard@gmail.com> Constify the function parameters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
a54b66277e5d4bdd55825eb9378f07334692020c 04-Aug-2013 Tim Northover <tnorthover@apple.com> X86: correct tail return address calculation

Due to the weird and wondeful usual arithmetic conversions, some
calculations involving negative values were getting performed in
uint32_t and then promoted to int64_t, which is really not a good
idea.

Patch by Katsuhiro Ueno.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
4010110ccf21be0517034b6ccf9493628afaad77 08-Jul-2013 Nico Rieck <nico.rieck@gmail.com> Reuse %rax after calling __chkstk on win64

Reapply this as I reverted the wrong commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d56e7e198d858439c884dbd909ee58d15742d5be 08-Jul-2013 Nico Rieck <nico.rieck@gmail.com> Revert "Reuse %rax after calling __chkstk on win64"

This reverts commit 01f8d579f7672872324208ac5bc4ac311e81b22e.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
01f8d579f7672872324208ac5bc4ac311e81b22e 07-Jul-2013 Nico Rieck <nico.rieck@gmail.com> Reuse %rax after calling __chkstk on win64

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
99cb622041a0839c7dfcf0263c5102a305a0fdb5 18-Jun-2013 Bill Wendling <isanbard@gmail.com> Use pointers to the MCAsmInfo and MCRegInfo.

Someone may want to do something crazy, like replace these objects if they
change or something.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184175 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
6b67ffd68bb2e555b1b512a809f3c82c68f3debe 16-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove addFrameMove.

Now that we have good testing, remove addFrameMove and create cfi
instructions directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
0ed9f1fd8687ad32364b56898e6ebe1515e0e41c 16-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
377b2270124f6f566c0f291bcb02f7755b642c2c 16-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d84ccfaf50c7843f31ffc74a8a8e33f779453d6e 11-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Change getFrameMoves to return a const reference.

To add a frame now there is a dedicated addFrameMove which also takes
care of constructing the move itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
edfef3bd27d6269d473fbc570e8c2be02b4070df 09-May-2013 Bill Wendling <isanbard@gmail.com> Generate a compact unwind encoding in the face of a stack alignment push.

We generate a `push' of a random register (%rax) if the stack needs to be
aligned by the size of that register. However, this could mess up compact unwind
generation. In particular, we want to still generate compact unwind in the
presence of this monstrosity.

Check if the push of of the %rax/%eax register. If it is and it's marked with
the `FrameSetup' flag, then we can generate a compact unwind encoding for the
function only if the push is the last FrameSetup instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
1f4b796b49d13075531ed43b35824ecc9d757467 09-May-2013 Bill Wendling <isanbard@gmail.com> Simplify the code a bit.

The compact unwind registers were defined in two different
places. It's better just to place them in the function that uses them
and specify that this is a 64-bit or 32-bit machine.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
89ec1c5c9c744c125b61145ed59783eb5c68ebf8 19-Apr-2013 Bill Wendling <isanbard@gmail.com> Use an enum instead of magic constants to improve readability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2828608e8e1432e8bdc9ec704c8db118b7386c19 19-Apr-2013 Bill Wendling <isanbard@gmail.com> Set the compact unwind encoding to 'requires EH DWARF' if we cannot generate a CU encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2d1035def15030ae404b227747d0a28454ea32a9 28-Feb-2013 Yiannis Tsiouris <gtsiour@softlab.ntua.gr> Re-format comments (and check commit access)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
700ed80d3da5e98e05ceb90e9bfb66058581a6db 21-Feb-2013 Eli Bendersky <eliben@google.com> Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo
to TargetFrameLowering, where it belongs. Incidentally, this allows us
to delete some duplicated (and slightly different!) code in TRI.

There are potentially other layering problems that can be cleaned up
as a result, or in a similar manner.

The refactoring was OK'd by Anton Korobeynikov on llvmdev.

Note: this touches the target interfaces, so out-of-tree targets may
be affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b1e1d5d4a575f5e5b4ceb7af68f33e75695ee959 19-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Clean up HiPE prologue emission a bit and avoid signed arithmetic tricks.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
9d7c53af30363038a0acb594201cdb1282510f7b 19-Feb-2013 NAKAMURA Takumi <geek4civic@gmail.com> X86FrameLowering.cpp: Fixup. Sorry for the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175467 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
82f7815e6f7819223b5f311195bfc1d9645d4754 19-Feb-2013 NAKAMURA Takumi <geek4civic@gmail.com> X86FrameLowering.cpp: Fix a warning in -Asserts. [-Wunused-variable]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
6228999d826c87ac90344356c2d123361dc1d648 18-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix a 32/64 bit incompatibility in the HiPE prologue generation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
98fbe27ac8f0766ea94b89b8c03418131b72bea4 18-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Support for HiPE-compatible code emission, patch by Yiannis Tsiouris.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b56606274d43c7a3e01b18a08d1115fbf2889996 16-Feb-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly.

If the frame pointer is omitted, and any stack changes occur in the inline
assembly, e.g.: "pusha", then any C local variable or C argument references
will be incorrect.

I pass no judgement on anyone who would do such a thing. ;)
rdar://13218191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
16221a60a00e52b078f6164ba4475c6e8e918e4b 06-Feb-2013 Eli Bendersky <eliben@google.com> This is a follow-up on r174446, now taking Atom processors into
account. Atoms use LEA for updating SP in prologs/epilogs, and the
exact LEA opcode depends on the data model.

Also reapplying the test case which was added and then reverted
(because of Atom failures), this time specifying explicitly the CPU in
addition to the triple. The test case now checks all variations (data
mode, cpu Atom vs. Core).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2a1b60d791522d73be91d4281c90d25bd5e3d117 05-Feb-2013 Eli Bendersky <eliben@google.com> Make sure the correct opcodes are used to SUB and ADD the stack
pointer in function prologs/epilogs. The opcodes should depend on the
data model (LP64 vs. ILP32) rather than the architecture bit-ness.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
831737d329a727f53a1fb0572f7b7a8127208881 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getFnAttributes method in favor of using the AttributeSet
directly.

This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
677689cf5dc65404645462464682a0696cc84532 23-Dec-2012 Nadav Rotem <nrotem@apple.com> Rename a function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d0696ef8c33b9b2504e89bc0aab2ea99a6c90756 22-Dec-2012 Nadav Rotem <nrotem@apple.com> In some cases, due to scheduling constraints we copy the EFLAGS.
The only way to read the eflags is using push and pop. If we don't
adjust the stack then we run over the first frame index. This is
not something that we want to do, so we have to make sure that
our machine function does not copy the flags. If it does then
we have to emit the prolog that adjusts the stack.

rdar://12896831



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
be06aacaa9a270384599bbfa850b967e9996b9fb 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to MI::copyImplicitOps().

This function is often used to decorate dangling instructions, so a
context reference is required to allocate memory for the operands.

Also add a corresponding MachineInstrBuilder method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
aa3c2c09d9d5bc67c6ca2fbc6697257b15476684 25-Oct-2012 Michael Liao <michael.liao@intel.com> Clean up where SlotSize should be used instead of pointer size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2c39b15073db81d93bb629303915b7d7e5d088dc 15-Oct-2012 Micah Villmow <villmow@gmail.com> Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
fb384d61c78b60787ed65475d8403aee65023962 11-Oct-2012 Micah Villmow <villmow@gmail.com> Revert 165732 for further review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
f3840d2c16a4ec4c879a8ded402835746de380f8 11-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
6765834754cbb3cb0f15b4b15e98c5e73fa50066 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Create enums for the different attributes.

We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
0313ced016f3777e806ca2e42a746d3162174c47 04-Oct-2012 Eric Christopher <echristo@gmail.com> Update this a bit more to represent how the prologue should work:

a) frame setup instructions define the prologue
b) we shouldn't change our location mid-stream

Add a test to make sure that the stack adjustment stays within
the prologue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
76ad43c6e1619ed4c087b8ccb2cd573eb9d7093e 03-Oct-2012 Eric Christopher <echristo@gmail.com> Revert 165051-165049 while looking into the foreach.m failure in
more detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
394820b8e159a39a9a07aac9722ad8738680037d 03-Oct-2012 Eric Christopher <echristo@apple.com> Revert "Don't use a debug location for frame setup instructions in the"

This reverts 165055 and 165052 temporarily while I look at debugger
failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165071 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
9fd304672cec6cd31b1978408a0a0dc375f96969 02-Oct-2012 Eric Christopher <echristo@apple.com> Don't use a debug location for frame setup instructions in the
prologue. Also skip frame setup instructions when looking for the
first location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
138f2061465a3e79cfc09b6bca1c3fba960b83cb 02-Oct-2012 Eric Christopher <echristo@apple.com> Use the existing DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2d4d0f0ee8cb4f071e03a5329a637522e12cde06 02-Oct-2012 Eric Christopher <echristo@apple.com> Make the location a parameter since we may not want the next one
in the block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2c189061184925c6a8ecbb5a19e648b230a41c0e 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Remove the `hasFnAttr' method from Function.

The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3591955bce8dd3fe638a913f23bf479670dbff4d 16-Jul-2012 Chad Rosier <mcrosier@apple.com> With r160248 in place this code is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
99a92f269d4ea6f13a9858bb883e13382d021120 16-Jul-2012 Alexey Samsonov <samsonov@google.com> This CL changes the function prologue and epilogue emitted on X86 when stack needs realignment.
It is intended to fix PR11468.

Old prologue and epilogue looked like this:
push %rbp
mov %rsp, %rbp
and $alignment, %rsp
push %r14
push %r15
...
pop %r15
pop %r14
mov %rbp, %rsp
pop %rbp

The problem was to reference the locations of callee-saved registers in exception handling:
locations of callee-saved had to be re-calculated regarding the stack alignment operation. It would
take some effort to implement this in LLVM, as currently MachineLocation can only have the form
"Register + Offset". Funciton prologue and epilogue are now changed to:

push %rbp
mov %rsp, %rbp
push %14
push %15
and $alignment, %rsp
...
lea -$size_of_saved_registers(%rbp), %rsp
pop %r15
pop %r14
pop %rbp

Reviewed by Chad Rosier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2b02688b6eee1340cb916934182a02698eea9f36 10-Jul-2012 Chad Rosier <mcrosier@apple.com> Move [get|set]BasePtrStackAdjustment() from MachineFrameInfo to
X86MachineFunctionInfo as this is currently only used by X86. If this ever
becomes an issue on another arch (e.g., ARM) then we can hoist it back out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3f0dbab963197cadb32f70e1ee1a106fe35f5c8e 10-Jul-2012 Chad Rosier <mcrosier@apple.com> Add support for dynamic stack realignment in the presence of dynamic allocas on
X86. Basically, this is a reapplication of r158087 with a few fixes.

Specifically, (1) the stack pointer is restored from the base pointer before
popping callee-saved registers and (2) in obscure cases (see comments in patch)
we must cache the value of the original stack adjustment in the prologue and
apply it in the epilogue.

rdar://11496434


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
85dccf18ea0e0b7258d1c5f186b616e022dbebf1 05-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make X86 call and return instructions non-variadic.

Function argument and return value registers aren't part of the
encoding, so they should be implicit operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159728 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e208c491726bb1efbfc4fc05a9f73ad808432979 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Functions calling __builtin_eh_return must have a frame pointer.

The code in X86TargetLowering::LowerEH_RETURN() assumes that a frame
pointer exists, but the frame pointer was forced by the presence of
llvm.eh.unwind.init which isn't guaranteed.

If llvm.eh.unwind.init is actually required in functions calling
eh.return (is it?), we should diagnose that instead of emitting bad
machine code.

This should fix the dragonegg-x86_64-linux-gcc-4.6-test bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
43369249e7c2be91535e3ef900673e6116a953de 18-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Temporarily revert r158087.

This patch causes problems when both dynamic stack realignment and
dynamic allocas combine in the same function. With this patch, we no
longer build the epilog correctly, and silently restore registers from
the wrong position in the stack.

Thanks to Matt for tracking this down, and getting at least an initial
test case to Chad. I'm going to try to check a variation of that test
case in so we can easily track the fixes required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
a97b180fc44718e525bb03b50e05fe66622c2b02 06-Jun-2012 Chad Rosier <mcrosier@apple.com> Add support for dynamic stack realignment in the presence of dynamic allocas on
X86.
rdar://11496434


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
53146a29bc0c8f835c8c05a5a9a966b887cbb214 24-May-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store register number in static tables to match other tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3fb6eca0cd4c2b31b06543ca2ac60b9c91c2264d 24-May-2012 Chad Rosier <mcrosier@apple.com> Tidy up naming for consistency and other cleanup. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d07d06ceef942c478c0f75a4c4d7442e61ddff1d 01-May-2012 Alexey Samsonov <samsonov@google.com> X86: Use StackRegister instead of FrameRegister in getFrameIndexReference (to generate debug info for local variables) if stack needs realignment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e4fd907e72a599eddfa7a81eac4366b5b82523e3 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store register overlaps to reduce static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
31d157ae1ac2cd9c787dc3c1d28e64c682803844 18-Feb-2012 Jia Liu <proljc@gmail.com> Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
de1df103b9c578d0a1609054a5944342c5d0ba23 07-Feb-2012 Evan Cheng <evan.cheng@apple.com> Use LEA to adjust stack ptr for Atom. Patch by Andy Zhang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150008 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
4d6ccb5f68cd7c6418a209f1fa4dbade569e4493 20-Jan-2012 David Blaikie <dblaikie@gmail.com> More dead code removal (using -Wunreachable-code)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b4ee5168abd0580a29f5c9becce26e3ea7bb2b8d 13-Jan-2012 Bill Wendling <isanbard@gmail.com> Fix off-by-one error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
86b1a7d61413aed40a68f98f1e8f17fd79ebd7a2 13-Jan-2012 Bill Wendling <isanbard@gmail.com> Fix the code that was WRONG.

The registers are placed into the saved registers list in the reverse order,
which is why the original loop was written to loop backwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
85b9d43d4c7a4a5e6e7da651a159353a9a00e227 12-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Support segmented stacks on 64-bit FreeBSD.
This patch uses tcb_spare field in the tcb structure to store info.
Patch by Jyun-Yan You.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e4d18de5d15c6c1d4d279788b35d0cd1ab237e82 12-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Support segmented stacks on win32.
Uses the pvArbitrary slot of the TIB, which is reserved for applications. We
only support frames with a static size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e2eb92578a1c5c6b890d8c6db41bb6b4d2662625 12-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> After Jakob's r147938 exception handling on i386 was completely broken.

Restore the (obviously wrong) behavior from before r147938 without relying on
undefined behavior. Add a fat FIXME note.

This should fix nightly tester failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2028b793e1fd1a8dd4d99b0b7c9972865d5e806a 11-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Support segmented stacks on mac.
This uses TLS slot 90, which actually belongs to JavaScriptCore. We only support
frames with static size
Patch by Brian Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
25cd4ff97e882ad5039dec15b0c9be8fef062b6b 11-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Generate the segmented stack prologue for fastcc too.
Patch by Brian Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
313c7038319422cff0b2ea1015e180575cab4b7a 11-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Use unsigned comparison in segmented stack prologue.
This is a comparison of two addresses, and GCC does the comparison unsigned.

Patch by Brian Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
014f7a3b3798580d5aac80b83bcb67e03d302fa4 11-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Explicitly set the scale to 1 on some segstack prologue instrs.
Patch by Brian Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
dec1f996152d4292133e81527ad710fbc1280946 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix undefined code and reenable test case.

I don't think the compact encoding code is right, but at least is has
defined behavior now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
10e412ec6b761952b95710203e6d2d89f4fee53a 15-Dec-2011 Bill Wendling <isanbard@gmail.com> The saved registers weren't being processed in the correct order. This lead to
the compact unwind claiming that one register was saved before another, which
isn't all that great in general. Process them in the natural order. Reverse the
list only when necessary for the algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146612 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b3ec329c14fa3d37b5963f188db54ba03c6b97c0 07-Dec-2011 Bill Wendling <isanbard@gmail.com> Adjust the stack by one pointer size for all frameless stacks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c61751373ab58f226ec37368c139404e67e847c0 07-Dec-2011 Bill Wendling <isanbard@gmail.com> Fix off-by-one error when encoding the stack size for a frameless stack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 07-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
84d518af1991f581b748c4d11dbeb1c54573556b 06-Dec-2011 Bill Wendling <isanbard@gmail.com> Explicitly check for the different SUB instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
581ac2723c5cb5182114092591eb5e21ceea2e77 06-Dec-2011 Bill Wendling <isanbard@gmail.com> Encode the total stack if there isn't a frame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
57a3cd2f326269dd1431cf430db50239a93450f2 06-Dec-2011 Bill Wendling <isanbard@gmail.com> * Add a macro to remove a magic number.
* Rename variables to reflect what they're actually used for.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145968 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
5b2c4978ce56455689c515c9d74cc1d92871f3bb 06-Dec-2011 Bill Wendling <isanbard@gmail.com> Check the correct value for small stack sizes. Also modify some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
75e14e0ebd29bb2b1893948037c0ae5df4e09a41 06-Dec-2011 Bill Wendling <isanbard@gmail.com> For a small sized stack, we encode that value directly with no "stack adjust" value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
80caf9c2737d4f1bf5bae3a283fe9d538f5e2970 06-Dec-2011 Bill Wendling <isanbard@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
79df986c60094e9ea29f081295aea08b1680a999 06-Dec-2011 Bill Wendling <isanbard@gmail.com> The compact encoding of the registers are 3-bits each. Make sure we shift the
value over that much.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
199ce33b3bfa0b6293946c1b835da2a1fbc8cab4 03-Dec-2011 Sanjoy Das <sanjoy@playingwithpointers.com> Check for stack space more intelligently.

libgcc sets the stack limit field in TCB to 256 bytes above the actual
allocated stack limit. This means if the function's stack frame needs
less than 256 bytes, we can just compare the stack pointer with the
stack limit. This should result in lesser calls to __morestack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
40f8222e1e6d273062e3c1234baa57db3c5705cf 03-Dec-2011 Sanjoy Das <sanjoy@playingwithpointers.com> Fix a bug in the x86-32 code generated for segmented stacks.

Currently LLVM pads the call to __morestack with a add and sub of 8
bytes to esp. This isn't correct since __morestack expects the call
to be followed directly by a ret.

This commit also adjusts the relevant test-case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 02-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move global variables in TargetMachine into new TargetOptions class. As an API
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.

One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
fc9261279aa140542cf9b7c2c384d000ad97aca0 01-Dec-2011 Sanjoy Das <sanjoy@playingwithpointers.com> Dummy commit to check commit access.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c739577d3c2e5ee47baaf8b4ba259718ec2db4cc 11-Nov-2011 Bill Wendling <isanbard@gmail.com> If we have to reset the calculation of the compact encoding, then also reset the
"saved register" index.
<rdar://problem/10430076>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e840e88239cf92a065cbf5f5b9c7d18bc139c0e1 26-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> This commit introduces two fake instructions MORESTACK_RET and
MORESTACK_RET_RESTORE_R10; which are lowered to a RET and a RET
followed by a MOV respectively. Having a fake instruction prevents
the verifier from seeing a MachineBasicBlock end with a
non-terminator (MOV). It also prevents the rather eccentric case of a
MachineBasicBlock ending with RET but having successors nevertheless.

Patch by Sanjoy Das.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
17001ce25cc205ac1cd2604492c2bce310964220 18-Oct-2011 Duncan Sands <baldrick@free.fr> Fix a bunch of unused variable warnings when doing a release
build with gcc-4.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
4e68054b20725f6ec1cac33630258f749fe5debe 13-Oct-2011 Bill Wendling <isanbard@gmail.com> More closely follow libgcc, which has code after the `ret' instruction to
release the stack segment and reset the stack pointer. Place the code in its own
MBB to make the verifier happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
82222c20be24adda7c218f3fdaf2e0ae049c955b 13-Oct-2011 Bill Wendling <isanbard@gmail.com> Should not add instructions to a BB after a return instruction. The machine instruction verifier doesn't like this, nor do I.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141856 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
51f0c7641983469cbd29f8862a121645471a885a 24-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only run MF.verify() with EXPENSIVE_CHECKS=1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140441 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c8725d11f8756c57bdbceccc61062a9d560261c5 07-Sep-2011 Bill Wendling <isanbard@gmail.com> Reenable compact unwind by default. However, also emit the old version of unwind
information for older linkers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139206 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
d199aa012bb7d05d55daa3b2d3fbeb421728706e 02-Sep-2011 Bill Wendling <isanbard@gmail.com> Revert r138826 until PR10834 can be fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e81abfd30b7c81735e9f3d79006c2653690aa592 31-Aug-2011 Rafael Espindola <rafael.espindola@gmail.com> Spelling and grammar fixes to problems found by Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
ac86d43eae8bbfe5284d8e5fa17c141d1a7b1194 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we don't crash when -miphoneos-version-min is specified on x86. Hopefully this will fix gcc testsuite failures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138856 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e716124feb4024e67934984b787d6096e05ae3a9 30-Aug-2011 Bill Wendling <isanbard@gmail.com> Fix off-by-one error Benjamin noticed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
011a8e1684d2aaac08acf3c0eea160bb65c3728b 30-Aug-2011 Bill Wendling <isanbard@gmail.com> Enable compact unwind info by default. This only applies to Darwin when CFI is
disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
76927d758657b3a511c73467ec5a7288795c1513 30-Aug-2011 Rafael Espindola <rafael.espindola@gmail.com> Emit segmented-stack specific code into function prologues for
X86. Modify the pass added in the previous patch to call this new
code.

This new prologues generated will call a libgcc routine (__morestack)
to allocate more stack space from the heap when required

Patch by Sanjoy Das.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
32a183c84ad0cbe492119c37f1a7941ace61dd79 12-Aug-2011 Andrew Trick <atrick@apple.com> findDeadCallerSavedReg fix: Missing NULL terminator in register arrays.

Fix by Ivan Baev. Sorry I don't have a unit test, but the fix is obvious so I don't want to delay it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137404 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
de77055a68a3fc495e01b682f00059af3e38822e 26-Jul-2011 Bill Wendling <isanbard@gmail.com> The compact unwinding offsets are divided by 8 on 64-bit machines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
39055b3a5c9044b18846361b9ebd8e289356cb99 25-Jul-2011 Bill Wendling <isanbard@gmail.com> Update the comment. This feature is available only on Darwin at the moment. Though it's not Darwin-specific.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
c57e7dbfaff2e5cfe668da9f68868826368407a1 25-Jul-2011 Bill Wendling <isanbard@gmail.com> Changed disabled code into a flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
091a864f06357f17a82645a559eadd2c55248889 25-Jul-2011 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135923 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
09b02c8dddf822e84c30cc08e7759d6ceebb2334 25-Jul-2011 Bill Wendling <isanbard@gmail.com> After we've modified the prolog to save volatile registers, generate the compact
unwind encoding for that function. This simply crawls through the prolog looking
for machine instrs marked as "frame setup". It can calculate from these what the
compact unwind should look like.

This is currently disabled because of needed linker support. But initial tests
look good.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
fb4eb165d66b8ca5ae09c37d98d3ed937454b6af 21-Jul-2011 Bill Wendling <isanbard@gmail.com> Mark instructions which are part of the frame setup with the MachineInstr::FrameSetup flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
7bc317818282a7603cc249fc9add286d02582338 21-Jul-2011 Bill Wendling <isanbard@gmail.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
16da7366d598dd863cd3c05c81ab089e830bbafe 21-Jul-2011 Bill Wendling <isanbard@gmail.com> Remove the now defunct getCompactUnwindEncoding method from the frame lowering code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2d28617de2b0b731c08d1af9e830f31e14ac75b4 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for
better location welcome).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
13123d94630494d5b1ac87472eb45de681549166 15-Jul-2011 Bill Wendling <isanbard@gmail.com> * Redo the permutation encoding for frameless stacks to be more like what the
unwind library expects.
* Comment the permutation encoding for frameless stacks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
efe2a6557d3152a817cb097e9bc327186975ace2 14-Jul-2011 Bill Wendling <isanbard@gmail.com> Add code to handle a "frameless" unwind stack.

The frameless unwind stack has a special encoding, the algorithm for which is in
"permuteEncode".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
8440fe21668fd4d47378371073af0702ea9413bc 13-Jul-2011 Bill Wendling <isanbard@gmail.com> Don't emit the FDE end label if the last thing emitted was a compact unwind and
not the FDE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3641e811729fc7f21039af595d62bc8e696ff407 13-Jul-2011 Bill Wendling <isanbard@gmail.com> Assign variable before we test it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
f4f53f08f554a6eac3cc1f6c84a7a639b5e647e4 13-Jul-2011 Bill Wendling <isanbard@gmail.com> Fix obvious think-o.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
595d745f5f3ce250111ca2231569c93b43dfe8ee 13-Jul-2011 Bill Wendling <isanbard@gmail.com> Clean up the handling of an EBP/RBP unwind frame pointer. In particular, don't
assert when the frame pointer is -1 (i.e., the function is "frameless").

Still to do: "frameless" unwind information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b99e412650d25776686b46e743751f4ba97a2e4e 07-Jul-2011 Bill Wendling <isanbard@gmail.com> Use ArrayRef instead of a std::vector&.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
6a6b8c3e96b9e1ca7092eafd0cfb219cbbfbdfc4 07-Jul-2011 Bill Wendling <isanbard@gmail.com> Add a target hook to encode the compact unwind information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3c2f0a11cce5a1e828e20675fa8467b624795e0a 14-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Fit banner in 80-col and adjust whitespace. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
aff232a5941c9ffb7ad52e08f81ad53794fed56b 12-Jun-2011 Charles Davis <cdavis@mines.edu> Put FrameSetup flag on x86 instructions that set up the call frame. No
functionality change.

Later on, we'll use the flag to emit SEH pseudo-ops that describe how the
call frame was built.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132880 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
fc2bb8c4448fa884d79e437cc2d2627a7d7740a8 25-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Replace the -unwind-tables option with a per function flag. This is more
LTO friendly as we can now correctly merge files compiled with or without
-fasynchronous-unwind-tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
b28d4f152ee9b76d8798b2bdcb06cb8d106841e6 26-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Print all the moves at a given label instead of just the first one.
Remove previous DwarfCFI hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130187 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
f0adba9a7ec8a3031876575a6ffb7db5f1b6f855 15-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Add 129518 back with a fix for when we are producing eh just because of debug info.
Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129571 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
7a2bdde0a0eebcd2125055e0eacaca040f0b766c 15-Apr-2011 Chris Lattner <sabre@nondot.org> Fix a ton of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
bcb8c6d09ee426e0f774e3412912f6ae9e5f78dd 15-Apr-2011 NAKAMURA Takumi <geek4civic@gmail.com> Revert r129518, "Change ELF systems to use CFI for producing the EH tables. This reduces the"

It broke several builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129557 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3dae6e7333b8fae7b79ddb99757ab5de73890af9 14-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
a2e0762fae050464494a50c8b5d53ac2f4ba738c 24-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> Target/X86: [PR8777][PR8778] Tweak alloca/chkstk for Windows targets.

FIXME: Some cleanups would be needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128206 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
419f23278388a8999b5c0bbe73ce823f63747f28 27-Feb-2011 NAKAMURA Takumi <geek4civic@gmail.com> Target/X86: Always emit "push/pop GPRs" in prologue/epilogue and emit "spill/reload frames" for XMMs.

It improves Win64's prologue/epilogue but it would not affect ia32 and amd64 (lack of nonvolatile XMMs).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
3f4be4fb86172e6b87a457b338483efc0c1efd05 05-Feb-2011 NAKAMURA Takumi <geek4civic@gmail.com> Target/X86: Tweak allocating shadow area (aka home) on Win64. It must be enough for caller to allocate one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2763538609fd455d63c192b320c73fb5d48c3e47 05-Feb-2011 NAKAMURA Takumi <geek4civic@gmail.com> Target/X86: Fix whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e47023d543aecb8ca558721a0259d83ab2b016a3 01-Feb-2011 Carl Norum <carl.norum@apple.com> Test commit - fix a double 'should' in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
2bffee2ee725047137d2523e31db9ecc7b246cbb 01-Feb-2011 Evan Cheng <evan.cheng@apple.com> Patches to build EFI with Clang/LLVM. By Carl Norum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
e749911372c75e4e68f83a32b4092f4ffb0d2793 14-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123475 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
f7ca976e74eafeeab0e9097f0fb07d6bb447415b 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a few more places that should use MBB::getLastNonDebugInstr().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
4f28c1c71450c711e96aa283de53739d8b4504cd 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach frame lowering to ignore debug values after the terminators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp
16c29b5f285f375be53dabaa73e3e91107485fe4 10-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123170 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/X86/X86FrameLowering.cpp