OSDN Git Service

[Statepoint] Constant fold FP deopt args.
authorDenis Antrushin <dantrushin@gmail.com>
Wed, 20 May 2020 19:40:07 +0000 (22:40 +0300)
committerDenis Antrushin <dantrushin@gmail.com>
Thu, 21 May 2020 08:02:54 +0000 (11:02 +0300)
commitdedcefe09d18f1e9d60336541fb6ad03dae551ba
tree5439d45802f56058eca92267d7fc0c963b985357
parent5b0d1f04bf8de8089a7b0ce243a25c16c6b3917f
[Statepoint] Constant fold FP deopt args.

We do not have any special handling for constant FP deopt arguments.
They are just spilled to stack or generated in register by MOVS
instruction. This is inefficient and, when we have too many such
constant arguments, may result in register allocation failure.
Instead, we can bitcast such constant FP operands to appropriately
sized integer and record as constant into statepoint and later, into
StackMap.

Reviewed By: skatkov
Differential Revision: https://reviews.llvm.org/D80318
llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
llvm/test/CodeGen/X86/statepoint-regs.ll