mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[GISel][CallLowering] Make isIncomingArgumentHandler a pure virtual method
The default implementation of isIncomingArgumentHandler could lead to generating incorrect code. Make it a pure virtual method, so that targets know they have to override it to produce correct code. NFC Differential Revision: https://reviews.llvm.org/D69187 llvm-svn: 375277
This commit is contained in:
parent
8217a0ec45
commit
cf9f28ca10
@ -118,7 +118,7 @@ public:
|
||||
|
||||
/// Returns true if the handler is dealing with incoming arguments,
|
||||
/// i.e. those that move values from some physical location to vregs.
|
||||
virtual bool isIncomingArgumentHandler() const { return false; }
|
||||
virtual bool isIncomingArgumentHandler() const = 0;
|
||||
|
||||
/// Materialize a VReg containing the address of the specified
|
||||
/// stack-based object. This is either based on a FrameIndex or
|
||||
|
@ -136,6 +136,8 @@ struct OutgoingArgHandler : public CallLowering::ValueHandler {
|
||||
AssignFnVarArg(AssignFnVarArg), IsTailCall(IsTailCall), FPDiff(FPDiff),
|
||||
StackSize(0) {}
|
||||
|
||||
bool isIncomingArgumentHandler() const override { return false; }
|
||||
|
||||
Register getStackAddress(uint64_t Size, int64_t Offset,
|
||||
MachinePointerInfo &MPO) override {
|
||||
MachineFunction &MF = MIRBuilder.getMF();
|
||||
|
@ -37,6 +37,8 @@ struct OutgoingValueHandler : public CallLowering::ValueHandler {
|
||||
|
||||
MachineInstrBuilder MIB;
|
||||
|
||||
bool isIncomingArgumentHandler() const override { return false; }
|
||||
|
||||
Register getStackAddress(uint64_t Size, int64_t Offset,
|
||||
MachinePointerInfo &MPO) override {
|
||||
llvm_unreachable("not implemented");
|
||||
|
@ -90,6 +90,8 @@ struct OutgoingValueHandler : public CallLowering::ValueHandler {
|
||||
MachineInstrBuilder &MIB, CCAssignFn *AssignFn)
|
||||
: ValueHandler(MIRBuilder, MRI, AssignFn), MIB(MIB) {}
|
||||
|
||||
bool isIncomingArgumentHandler() const override { return false; }
|
||||
|
||||
Register getStackAddress(uint64_t Size, int64_t Offset,
|
||||
MachinePointerInfo &MPO) override {
|
||||
assert((Size == 1 || Size == 2 || Size == 4 || Size == 8) &&
|
||||
|
@ -102,6 +102,8 @@ struct OutgoingValueHandler : public CallLowering::ValueHandler {
|
||||
DL(MIRBuilder.getMF().getDataLayout()),
|
||||
STI(MIRBuilder.getMF().getSubtarget<X86Subtarget>()) {}
|
||||
|
||||
bool isIncomingArgumentHandler() const override { return false; }
|
||||
|
||||
Register getStackAddress(uint64_t Size, int64_t Offset,
|
||||
MachinePointerInfo &MPO) override {
|
||||
LLT p0 = LLT::pointer(0, DL.getPointerSizeInBits(0));
|
||||
|
Loading…
Reference in New Issue
Block a user