diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-06-28 18:32:28 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-06-28 18:32:28 +0000 |
commit | 9bbe4d6c004f25bc491e2583cce7bc91891f68c7 (patch) | |
tree | d2d48643254849cc073041c0057eba852f5dc619 /lib/CodeGen/TargetInstrInfoImpl.cpp | |
parent | bd35f27ce9ecf7a6e6e1028dfc8652023cab265b (diff) |
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/TargetInstrInfoImpl.cpp')
0 files changed, 0 insertions, 0 deletions