aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/IRObjectFile.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2021-07-12 10:09:15 -0700
committerCraig Topper <craig.topper@sifive.com>2021-07-12 10:15:38 -0700
commitd5c97f4bf0449f8a4ad6260c75cbf6ff3605ac04 (patch)
tree6ba787c8600d80e54cd16eb844df12d7e6b74072 /llvm/lib/Object/IRObjectFile.cpp
parent46580d43fc70dcecf21d2cedceeb4910c756fa6e (diff)
downloadllvm-d5c97f4bf0449f8a4ad6260c75cbf6ff3605ac04.zip
llvm-d5c97f4bf0449f8a4ad6260c75cbf6ff3605ac04.tar.gz
llvm-d5c97f4bf0449f8a4ad6260c75cbf6ff3605ac04.tar.bz2
[X86] Teach X86FloatingPoint's handleCall to only erase the FP stack if there is a regmask operand that clobbers the FP stack.
There are some calls to functions like `__alloca` that are missing a regmask operand. Lack of a regmask operand means that all registers that aren't mentioned by def operands are preserved. __alloca only updates EAX and ESP and has def operands for them so this is ok. Because there is no regmask the register allocator won't spill the FP registers across the call. Assuming we want to keep the FP stack untoched across these calls, we need to handle this is in the FP stackifier. We might want to add a proper regmask operand to the code that creates these calls to indicate all registers are preserved, but we'd still need this change to the FP stackifier to know to preserve the FP stack for such a regmask. The test is kind of long, but bugpoint wasn't able to reduce it any further. Fixes PR50782 Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D105762
Diffstat (limited to 'llvm/lib/Object/IRObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions