summaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegAllocFast.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-28 18:32:28 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-28 18:32:28 +0000
commit9bbe4d6c004f25bc491e2583cce7bc91891f68c7 (patch)
treed2d48643254849cc073041c0057eba852f5dc619 /lib/CodeGen/RegAllocFast.cpp
parentbd35f27ce9ecf7a6e6e1028dfc8652023cab265b (diff)
downloadllvm-9bbe4d6c004f25bc491e2583cce7bc91891f68c7.tar.gz
llvm-9bbe4d6c004f25bc491e2583cce7bc91891f68c7.tar.bz2
llvm-9bbe4d6c004f25bc491e2583cce7bc91891f68c7.tar.xz
Clean up the handling of the x87 fp stack to make it more robust.
Drop the FpMov instructions, use plain COPY instead. Drop the FpSET/GET instruction for accessing fixed stack positions. Instead use normal COPY to/from ST registers around inline assembly, and provide a single new FpPOP_RETVAL instruction that can access the return value(s) from a call. This is still necessary since you cannot tell from the CALL instruction alone if it returns anything on the FP stack. Teach fast isel to use this. This provides a much more robust way of handling fixed stack registers - we can tolerate arbitrary FP stack instructions inserted around calls and inline assembly. Live range splitting could sometimes break x87 code by inserting spill code in unfortunate places. As a bonus we handle floating point inline assembly correctly now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134018 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocFast.cpp')
0 files changed, 0 insertions, 0 deletions