struct CallLowering::ValueAssigner

Declaration

struct CallLowering::ValueAssigner { /* full declaration omitted */ };

Description

Argument handling is mostly uniform between the four places that make these decisions: function formal arguments, call instruction args, call instruction returns and function returns. However, once a decision has been made on where an argument should go, exactly what happens can vary slightly. This class abstracts the differences. ValueAssigner should not depend on any specific function state, and only determine the types and locations for arguments.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:158

Member Variables

public llvm::CCAssignFn* AssignFn
Assignment function to use for a general call.
public llvm::CCAssignFn* AssignFnVarArg
Assignment function to use for a variadic call. This is usually the same as AssignFn on most targets.
public uint64_t StackOffset = 0
Stack offset for next argument. At the end of argument evaluation, this is typically the total stack size.
private const bool IsIncomingArgumentHandler

Method Overview

  • public ValueAssigner(bool IsIncoming, llvm::CCAssignFn * AssignFn_, llvm::CCAssignFn * AssignFnVarArg_ = nullptr)
  • private virtual void anchor()
  • public virtual bool assignArg(unsigned int ValNo, llvm::EVT OrigVT, llvm::MVT ValVT, llvm::MVT LocVT, CCValAssign::LocInfo LocInfo, const llvm::CallLowering::ArgInfo & Info, ISD::ArgFlagsTy Flags, llvm::CCState & State)
  • public llvm::CCAssignFn * getAssignFn(bool IsVarArg) const
  • public bool isIncomingArgumentHandler() const
  • public virtual ~ValueAssigner()

Methods

ValueAssigner(
    bool IsIncoming,
    llvm::CCAssignFn* AssignFn_,
    llvm::CCAssignFn* AssignFnVarArg_ = nullptr)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:159

Parameters

bool IsIncoming
llvm::CCAssignFn* AssignFn_
llvm::CCAssignFn* AssignFnVarArg_ = nullptr

virtual void anchor()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:211

virtual bool assignArg(
    unsigned int ValNo,
    llvm::EVT OrigVT,
    llvm::MVT ValVT,
    llvm::MVT LocVT,
    CCValAssign::LocInfo LocInfo,
    const llvm::CallLowering::ArgInfo& Info,
    ISD::ArgFlagsTy Flags,
    llvm::CCState& State)

Description

Wrap call to (typically tablegenerated CCAssignFn). This may be overridden to track additional state information as arguments are assigned or apply target specific hacks around the legacy infrastructure.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:182

Parameters

unsigned int ValNo
llvm::EVT OrigVT
llvm::MVT ValVT
llvm::MVT LocVT
CCValAssign::LocInfo LocInfo
const llvm::CallLowering::ArgInfo& Info
ISD::ArgFlagsTy Flags
llvm::CCState& State

llvm::CCAssignFn* getAssignFn(bool IsVarArg) const

Description

Select the appropriate assignment function depending on whether this is a variadic call.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:205

Parameters

bool IsVarArg

bool isIncomingArgumentHandler() const

Description

Returns true if the handler is dealing with incoming arguments, i.e. those that move values from some physical location to vregs.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:174

virtual ~ValueAssigner()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:170