mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Make the logic for determining function alignment more explicit. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131012 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8265e6ab4f
commit
fc5d305597
@ -761,6 +761,18 @@ public:
|
||||
return MinStackArgumentAlignment;
|
||||
}
|
||||
|
||||
/// getMinFunctionAlignment - return the minimum function alignment.
|
||||
///
|
||||
unsigned getMinFunctionAlignment() const {
|
||||
return MinFunctionAlignment;
|
||||
}
|
||||
|
||||
/// getPrefFunctionAlignment - return the preferred function alignment.
|
||||
///
|
||||
unsigned getPrefFunctionAlignment() const {
|
||||
return PrefFunctionAlignment;
|
||||
}
|
||||
|
||||
/// getPrefLoopAlignment - return the preferred loop alignment.
|
||||
///
|
||||
unsigned getPrefLoopAlignment() const {
|
||||
@ -824,9 +836,6 @@ public:
|
||||
/// PIC relocation models.
|
||||
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *) const = 0;
|
||||
|
||||
/// getStackCookieLocation - Return true if the target stores stack
|
||||
/// protector cookies at a fixed offset in some non-standard address
|
||||
/// space, and populates the address space and offset as
|
||||
@ -1167,6 +1176,18 @@ protected:
|
||||
JumpBufAlignment = Align;
|
||||
}
|
||||
|
||||
/// setMinFunctionAlignment - Set the target's minimum function alignment.
|
||||
void setMinFunctionAlignment(unsigned Align) {
|
||||
MinFunctionAlignment = Align;
|
||||
}
|
||||
|
||||
/// setPrefFunctionAlignment - Set the target's preferred function alignment.
|
||||
/// This should be set if there is a small performance benefit to
|
||||
/// higher-than-minimum alignment
|
||||
void setPrefFunctionAlignment(unsigned Align) {
|
||||
PrefFunctionAlignment = Align;
|
||||
}
|
||||
|
||||
/// setPrefLoopAlignment - Set the target's preferred loop alignment. Default
|
||||
/// alignment is zero, it means the target does not care about loop alignment.
|
||||
void setPrefLoopAlignment(unsigned Align) {
|
||||
@ -1701,6 +1722,17 @@ private:
|
||||
///
|
||||
unsigned MinStackArgumentAlignment;
|
||||
|
||||
/// MinFunctionAlignment - The minimum function alignment (used when
|
||||
/// optimizing for size, and to prevent explicitly provided alignment
|
||||
/// from leading to incorrect code).
|
||||
///
|
||||
unsigned MinFunctionAlignment;
|
||||
|
||||
/// PrefFunctionAlignment - The perferred function alignment (used when
|
||||
/// alignment unspecified and optimizing for speed).
|
||||
///
|
||||
unsigned PrefFunctionAlignment;
|
||||
|
||||
/// PrefLoopAlignment - The perferred loop alignment.
|
||||
///
|
||||
unsigned PrefLoopAlignment;
|
||||
|
@ -65,7 +65,11 @@ MachineFunction::MachineFunction(const Function *F, const TargetMachine &TM,
|
||||
FrameInfo->setMaxAlignment(Attribute::getStackAlignmentFromAttrs(
|
||||
Fn->getAttributes().getFnAttributes()));
|
||||
ConstantPool = new (Allocator) MachineConstantPool(TM.getTargetData());
|
||||
Alignment = TM.getTargetLowering()->getFunctionAlignment(F);
|
||||
Alignment = TM.getTargetLowering()->getMinFunctionAlignment();
|
||||
// FIXME: Shouldn't use pref alignment if explicit alignment is set on Fn.
|
||||
if (!Fn->hasFnAttr(Attribute::OptimizeForSize))
|
||||
Alignment = std::max(Alignment,
|
||||
TM.getTargetLowering()->getPrefFunctionAlignment());
|
||||
FunctionNumber = FunctionNum;
|
||||
JumpTableInfo = 0;
|
||||
}
|
||||
|
@ -596,6 +596,8 @@ TargetLowering::TargetLowering(const TargetMachine &tm,
|
||||
SchedPreferenceInfo = Sched::Latency;
|
||||
JumpBufSize = 0;
|
||||
JumpBufAlignment = 0;
|
||||
MinFunctionAlignment = 0;
|
||||
PrefFunctionAlignment = 0;
|
||||
PrefLoopAlignment = 0;
|
||||
MinStackArgumentAlignment = 1;
|
||||
ShouldFoldAtomicFences = false;
|
||||
|
@ -724,6 +724,8 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
|
||||
setMinStackArgumentAlignment(4);
|
||||
|
||||
benefitFromCodePlacementOpt = true;
|
||||
|
||||
setMinFunctionAlignment(Subtarget->isThumb() ? 1 : 2);
|
||||
}
|
||||
|
||||
// FIXME: It might make sense to define the representative register class as the
|
||||
@ -925,11 +927,6 @@ ARMTargetLowering::createFastISel(FunctionLoweringInfo &funcInfo) const {
|
||||
return ARM::createFastISel(funcInfo);
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned ARMTargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
return getTargetMachine().getSubtarget<ARMSubtarget>().isThumb() ? 1 : 2;
|
||||
}
|
||||
|
||||
/// getMaximalGlobalOffset - Returns the maximal possible offset which can
|
||||
/// be used for loads / stores from the global.
|
||||
unsigned ARMTargetLowering::getMaximalGlobalOffset() const {
|
||||
|
@ -327,9 +327,6 @@ namespace llvm {
|
||||
/// specified value type.
|
||||
virtual TargetRegisterClass *getRegClassFor(EVT VT) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
/// getMaximalGlobalOffset - Returns the maximal possible offset which can
|
||||
/// be used for loads / stores from the global.
|
||||
virtual unsigned getMaximalGlobalOffset() const;
|
||||
|
@ -155,6 +155,8 @@ AlphaTargetLowering::AlphaTargetLowering(TargetMachine &TM)
|
||||
setJumpBufSize(272);
|
||||
setJumpBufAlignment(16);
|
||||
|
||||
setMinFunctionAlignment(4);
|
||||
|
||||
computeRegisterProperties();
|
||||
}
|
||||
|
||||
@ -180,11 +182,6 @@ const char *AlphaTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
}
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned AlphaTargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
return 4;
|
||||
}
|
||||
|
||||
static SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG) {
|
||||
EVT PtrVT = Op.getValueType();
|
||||
JumpTableSDNode *JT = cast<JumpTableSDNode>(Op);
|
||||
|
@ -104,9 +104,6 @@ namespace llvm {
|
||||
|
||||
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
/// isFPImmLegal - Returns true if the target can instruction select the
|
||||
/// specified FP immediate natively. If false, the legalizer will
|
||||
/// materialize the FP immediate as a load from a constant pool.
|
||||
|
@ -121,6 +121,8 @@ BlackfinTargetLowering::BlackfinTargetLowering(TargetMachine &TM)
|
||||
setOperationAction(ISD::VAEND, MVT::Other, Expand);
|
||||
setOperationAction(ISD::STACKSAVE, MVT::Other, Expand);
|
||||
setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand);
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
}
|
||||
|
||||
const char *BlackfinTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
@ -497,11 +499,6 @@ BlackfinTargetLowering::ReplaceNodeResults(SDNode *N,
|
||||
}
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned BlackfinTargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
return 2;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Blackfin Inline Assembly Support
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -53,7 +53,6 @@ namespace llvm {
|
||||
EVT VT) const;
|
||||
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
|
||||
const char *getTargetNodeName(unsigned Opcode) const;
|
||||
unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
private:
|
||||
SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
@ -445,6 +445,8 @@ SPUTargetLowering::SPUTargetLowering(SPUTargetMachine &TM)
|
||||
setTargetDAGCombine(ISD::SIGN_EXTEND);
|
||||
setTargetDAGCombine(ISD::ANY_EXTEND);
|
||||
|
||||
setMinFunctionAlignment(3);
|
||||
|
||||
computeRegisterProperties();
|
||||
|
||||
// Set pre-RA register scheduler default to BURR, which produces slightly
|
||||
@ -489,11 +491,6 @@ SPUTargetLowering::getTargetNodeName(unsigned Opcode) const
|
||||
return ((i != node_names.end()) ? i->second : 0);
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned SPUTargetLowering::getFunctionAlignment(const Function *) const {
|
||||
return 3;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Return the Cell SPU's SETCC result type
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -152,9 +152,6 @@ namespace llvm {
|
||||
|
||||
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
virtual SDValue
|
||||
LowerFormalArguments(SDValue Chain,
|
||||
CallingConv::ID CallConv, bool isVarArg,
|
||||
|
@ -180,6 +180,8 @@ MBlazeTargetLowering::MBlazeTargetLowering(MBlazeTargetMachine &TM)
|
||||
setLoadExtAction(ISD::EXTLOAD, MVT::f32, Expand);
|
||||
setTruncStoreAction(MVT::f64, MVT::f32, Expand);
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
|
||||
setStackPointerRegisterToSaveRestore(MBlaze::R1);
|
||||
computeRegisterProperties();
|
||||
}
|
||||
@ -188,11 +190,6 @@ MVT::SimpleValueType MBlazeTargetLowering::getSetCCResultType(EVT VT) const {
|
||||
return MVT::i32;
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned MBlazeTargetLowering::getFunctionAlignment(const Function *) const {
|
||||
return 2;
|
||||
}
|
||||
|
||||
SDValue MBlazeTargetLowering::LowerOperation(SDValue Op,
|
||||
SelectionDAG &DAG) const {
|
||||
switch (Op.getOpcode())
|
||||
|
@ -104,7 +104,6 @@ namespace llvm {
|
||||
/// getSetCCResultType - get the ISD::SETCC result ValueType
|
||||
MVT::SimpleValueType getSetCCResultType(EVT VT) const;
|
||||
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
private:
|
||||
// Subtarget Info
|
||||
const MBlazeSubtarget *Subtarget;
|
||||
|
@ -170,6 +170,9 @@ MSP430TargetLowering::MSP430TargetLowering(MSP430TargetMachine &tm) :
|
||||
setLibcallName(RTLIB::MUL_I8, "__mulqi3hw_noint");
|
||||
setLibcallName(RTLIB::MUL_I16, "__mulhi3hw_noint");
|
||||
}
|
||||
|
||||
setMinFunctionAlignment(1);
|
||||
setPrefFunctionAlignment(2);
|
||||
}
|
||||
|
||||
SDValue MSP430TargetLowering::LowerOperation(SDValue Op,
|
||||
@ -193,11 +196,6 @@ SDValue MSP430TargetLowering::LowerOperation(SDValue Op,
|
||||
}
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned MSP430TargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
return F->hasFnAttr(Attribute::OptimizeForSize) ? 1 : 2;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MSP430 Inline Assembly Support
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -82,9 +82,6 @@ namespace llvm {
|
||||
/// DAG node.
|
||||
virtual const char *getTargetNodeName(unsigned Opcode) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
SDValue LowerShifts(SDValue Op, SelectionDAG &DAG) const;
|
||||
SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const;
|
||||
SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
@ -171,6 +171,8 @@ MipsTargetLowering(MipsTargetMachine &TM)
|
||||
setTargetDAGCombine(ISD::UDIVREM);
|
||||
setTargetDAGCombine(ISD::SETCC);
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
|
||||
setStackPointerRegisterToSaveRestore(Mips::SP);
|
||||
computeRegisterProperties();
|
||||
}
|
||||
@ -179,11 +181,6 @@ MVT::SimpleValueType MipsTargetLowering::getSetCCResultType(EVT VT) const {
|
||||
return MVT::i32;
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned MipsTargetLowering::getFunctionAlignment(const Function *) const {
|
||||
return 2;
|
||||
}
|
||||
|
||||
// SelectMadd -
|
||||
// Transforms a subgraph in CurDAG if the following pattern is found:
|
||||
// (addc multLo, Lo0), (adde multHi, Hi0),
|
||||
|
@ -89,9 +89,6 @@ namespace llvm {
|
||||
/// getSetCCResultType - get the ISD::SETCC result ValueType
|
||||
MVT::SimpleValueType getSetCCResultType(EVT VT) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
virtual SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const;
|
||||
private:
|
||||
// Subtarget Info
|
||||
|
@ -65,7 +65,9 @@ PTXTargetLowering::PTXTargetLowering(TargetMachine &TM)
|
||||
|
||||
// need to lower SETCC of Preds into bitwise logic
|
||||
setOperationAction(ISD::SETCC, MVT::i1, Custom);
|
||||
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
|
||||
// Compute derived properties from the register classes
|
||||
computeRegisterProperties();
|
||||
}
|
||||
|
@ -37,9 +37,6 @@ class PTXTargetLowering : public TargetLowering {
|
||||
|
||||
virtual const char *getTargetNodeName(unsigned Opcode) const;
|
||||
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const {
|
||||
return 2; }
|
||||
|
||||
virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
||||
virtual SDValue LowerSETCC(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
@ -394,6 +394,10 @@ PPCTargetLowering::PPCTargetLowering(PPCTargetMachine &TM)
|
||||
setLibcallName(RTLIB::EXP2_PPCF128, "exp2l$LDBL128");
|
||||
}
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
if (PPCSubTarget.isDarwin())
|
||||
setPrefFunctionAlignment(4);
|
||||
|
||||
computeRegisterProperties();
|
||||
}
|
||||
|
||||
@ -460,14 +464,6 @@ MVT::SimpleValueType PPCTargetLowering::getSetCCResultType(EVT VT) const {
|
||||
return MVT::i32;
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned PPCTargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
if (getTargetMachine().getSubtarget<PPCSubtarget>().isDarwin())
|
||||
return F->hasFnAttr(Attribute::OptimizeForSize) ? 2 : 4;
|
||||
else
|
||||
return 2;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Node matching predicates, for use by the tblgen matching code.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -364,9 +364,6 @@ namespace llvm {
|
||||
bool NonScalarIntSafe, bool MemcpyStrSrc,
|
||||
MachineFunction &MF) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
private:
|
||||
SDValue getFramePointerFrameIndex(SelectionDAG & DAG) const;
|
||||
SDValue getReturnAddrFrameIndex(SelectionDAG & DAG) const;
|
||||
|
@ -799,6 +799,8 @@ SparcTargetLowering::SparcTargetLowering(TargetMachine &TM)
|
||||
if (TM.getSubtarget<SparcSubtarget>().isV9())
|
||||
setOperationAction(ISD::CTPOP, MVT::i32, Legal);
|
||||
|
||||
setMinFunctionAlignment(2);
|
||||
|
||||
computeRegisterProperties();
|
||||
}
|
||||
|
||||
@ -1288,8 +1290,3 @@ SparcTargetLowering::isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const {
|
||||
// The Sparc target isn't yet aware of offsets.
|
||||
return false;
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned SparcTargetLowering::getFunctionAlignment(const Function *) const {
|
||||
return 2;
|
||||
}
|
||||
|
@ -71,9 +71,6 @@ namespace llvm {
|
||||
|
||||
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
virtual SDValue
|
||||
LowerFormalArguments(SDValue Chain,
|
||||
CallingConv::ID CallConv,
|
||||
|
@ -153,6 +153,8 @@ SystemZTargetLowering::SystemZTargetLowering(SystemZTargetMachine &tm) :
|
||||
setOperationAction(ISD::FP_TO_UINT, MVT::i64, Expand);
|
||||
|
||||
setTruncStoreAction(MVT::f64, MVT::f32, Expand);
|
||||
|
||||
setMinFunctionAlignment(1);
|
||||
}
|
||||
|
||||
SDValue SystemZTargetLowering::LowerOperation(SDValue Op,
|
||||
|
@ -66,11 +66,6 @@ namespace llvm {
|
||||
/// DAG node.
|
||||
virtual const char *getTargetNodeName(unsigned Opcode) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::pair<unsigned, const TargetRegisterClass*>
|
||||
getRegForInlineAsmConstraint(const std::string &Constraint, EVT VT) const;
|
||||
TargetLowering::ConstraintType
|
||||
|
@ -1096,6 +1096,8 @@ X86TargetLowering::X86TargetLowering(X86TargetMachine &TM)
|
||||
maxStoresPerMemmoveOptSize = Subtarget->isTargetDarwin() ? 8 : 4;
|
||||
setPrefLoopAlignment(16);
|
||||
benefitFromCodePlacementOpt = true;
|
||||
|
||||
setPrefFunctionAlignment(4);
|
||||
}
|
||||
|
||||
|
||||
@ -1247,11 +1249,6 @@ getPICJumpTableRelocBaseExpr(const MachineFunction *MF, unsigned JTI,
|
||||
return MCSymbolRefExpr::Create(MF->getPICBaseSymbol(), Ctx);
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned X86TargetLowering::getFunctionAlignment(const Function *F) const {
|
||||
return F->hasFnAttr(Attribute::OptimizeForSize) ? 0 : 4;
|
||||
}
|
||||
|
||||
// FIXME: Why this routine is here? Move to RegInfo!
|
||||
std::pair<const TargetRegisterClass*, uint8_t>
|
||||
X86TargetLowering::findRepresentativeClass(EVT VT) const{
|
||||
|
@ -674,9 +674,6 @@ namespace llvm {
|
||||
/// or null if the target does not support "fast" ISel.
|
||||
virtual FastISel *createFastISel(FunctionLoweringInfo &funcInfo) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
/// getStackCookieLocation - Return true if the target stores stack
|
||||
/// protector cookies at a fixed offset in some non-standard address
|
||||
/// space, and populates the address space and offset as
|
||||
|
@ -156,6 +156,8 @@ XCoreTargetLowering::XCoreTargetLowering(XCoreTargetMachine &XTM)
|
||||
// We have target-specific dag combine patterns for the following nodes:
|
||||
setTargetDAGCombine(ISD::STORE);
|
||||
setTargetDAGCombine(ISD::ADD);
|
||||
|
||||
setMinFunctionAlignment(1);
|
||||
}
|
||||
|
||||
SDValue XCoreTargetLowering::
|
||||
@ -201,12 +203,6 @@ void XCoreTargetLowering::ReplaceNodeResults(SDNode *N,
|
||||
}
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
unsigned XCoreTargetLowering::
|
||||
getFunctionAlignment(const Function *) const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Misc Lower Operation implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -103,9 +103,6 @@ namespace llvm {
|
||||
virtual bool isLegalAddressingMode(const AddrMode &AM,
|
||||
const Type *Ty) const;
|
||||
|
||||
/// getFunctionAlignment - Return the Log2 alignment of this function.
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
private:
|
||||
const XCoreTargetMachine &TM;
|
||||
const XCoreSubtarget &Subtarget;
|
||||
|
Loading…
x
Reference in New Issue
Block a user