/// A pseudo source value referencing to the stack frame of a function,
/// e.g., a spill slot.
- static const PseudoSourceValue &getFixedStack();
+ static const PseudoSourceValue *getFixedStack();
/// A source value referencing the area below the stack frame of a function,
/// e.g., the argument space.
- static const PseudoSourceValue &getStack();
+ static const PseudoSourceValue *getStack();
/// A source value referencing the global offset table (or something the
/// like).
- static const PseudoSourceValue &getGOT();
+ static const PseudoSourceValue *getGOT();
/// A SV referencing the constant pool
- static const PseudoSourceValue &getConstantPool();
+ static const PseudoSourceValue *getConstantPool();
/// A SV referencing the jump table
- static const PseudoSourceValue &getJumpTable();
+ static const PseudoSourceValue *getJumpTable();
};
} // End llvm namespace
namespace llvm {
static ManagedStatic<PseudoSourceValue[5]> PSVs;
- const PseudoSourceValue &PseudoSourceValue::getFixedStack() { return (*PSVs)[0]; }
- const PseudoSourceValue &PseudoSourceValue::getStack() { return (*PSVs)[1]; }
- const PseudoSourceValue &PseudoSourceValue::getGOT() { return (*PSVs)[2]; }
- const PseudoSourceValue &PseudoSourceValue::getConstantPool() { return (*PSVs)[3]; }
- const PseudoSourceValue &PseudoSourceValue::getJumpTable() { return (*PSVs)[4]; }
+ const PseudoSourceValue *PseudoSourceValue::getFixedStack() { return &(*PSVs)[0]; }
+ const PseudoSourceValue *PseudoSourceValue::getStack() { return &(*PSVs)[1]; }
+ const PseudoSourceValue *PseudoSourceValue::getGOT() { return &(*PSVs)[2]; }
+ const PseudoSourceValue *PseudoSourceValue::getConstantPool() { return &(*PSVs)[3]; }
+ const PseudoSourceValue *PseudoSourceValue::getJumpTable() { return &(*PSVs)[4]; }
static const char *PSVNames[] = {
"FixedStack",
SDOperand CPIdx = DAG.getConstantPool(LLVMC, TLI.getPointerTy());
if (Extend) {
return DAG.getExtLoad(ISD::EXTLOAD, MVT::f64, DAG.getEntryNode(),
- CPIdx, &PseudoSourceValue::getConstantPool(),
+ CPIdx, PseudoSourceValue::getConstantPool(),
0, MVT::f32);
} else {
return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0);
+ PseudoSourceValue::getConstantPool(), 0);
}
}
// Store the vector.
SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Tmp1, StackPtr,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
SPFI);
// Truncate or zero extend offset to target pointer type.
SDOperand StackPtr2 = DAG.getNode(ISD::ADD, IdxVT, Tmp3, StackPtr);
// Store the scalar value.
Ch = DAG.getStore(Ch, Tmp2, StackPtr2,
- &PseudoSourceValue::getFixedStack(), SPFI);
+ PseudoSourceValue::getFixedStack(), SPFI);
// Load the updated vector.
Result = DAG.getLoad(VT, Ch, StackPtr,
- &PseudoSourceValue::getFixedStack(), SPFI);
+ PseudoSourceValue::getFixedStack(), SPFI);
break;
}
}
switch (EntrySize) {
default: assert(0 && "Size of jump table not supported yet."); break;
case 4: LD = DAG.getLoad(MVT::i32, Chain, Addr,
- &PseudoSourceValue::getJumpTable(), 0); break;
+ PseudoSourceValue::getJumpTable(), 0); break;
case 8: LD = DAG.getLoad(MVT::i64, Chain, Addr,
- &PseudoSourceValue::getJumpTable(), 0); break;
+ PseudoSourceValue::getJumpTable(), 0); break;
}
Addr = LD;
SDOperand Store;
if (SrcSize > SlotSize)
Store = DAG.getTruncStore(DAG.getEntryNode(), SrcOp, FIPtr,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
SPFI, SlotVT);
else {
assert(SrcSize == SlotSize && "Invalid store");
Store = DAG.getStore(DAG.getEntryNode(), SrcOp, FIPtr,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
SPFI, SlotVT);
}
int SPFI = StackPtrFI->getIndex();
SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackPtr,
- &PseudoSourceValue::getFixedStack(), SPFI);
+ PseudoSourceValue::getFixedStack(), SPFI);
return DAG.getLoad(Node->getValueType(0), Ch, StackPtr,
- &PseudoSourceValue::getFixedStack(), SPFI);
+ PseudoSourceValue::getFixedStack(), SPFI);
}
Constant *CP = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(CP, TLI.getPointerTy());
return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0);
+ PseudoSourceValue::getConstantPool(), 0);
}
if (SplatValue.Val) { // Splat of one value?
SDOperand FudgeInReg;
if (DestTy == MVT::f32)
FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0);
+ PseudoSourceValue::getConstantPool(), 0);
else if (MVT::getSizeInBits(DestTy) > MVT::getSizeInBits(MVT::f32))
// FIXME: Avoid the extend by construction the right constantpool?
FudgeInReg = DAG.getExtLoad(ISD::EXTLOAD, DestTy, DAG.getEntryNode(),
CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
MVT::f32);
else
assert(0 && "Unexpected conversion");
SDOperand FudgeInReg;
if (DestVT == MVT::f32)
FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0);
+ PseudoSourceValue::getConstantPool(), 0);
else {
FudgeInReg =
LegalizeOp(DAG.getExtLoad(ISD::EXTLOAD, DestVT,
DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
MVT::f32));
}
SDOperand St = DAG.getStore(DAG.getEntryNode(),
InOp, Ptr,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
FI->getIndex());
InOp = DAG.getLoad(Op.getValueType(), St, Ptr,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
FI->getIndex());
}
// Split the vector and convert each of the pieces now.
const FrameIndexSDNode *FI =
dyn_cast<const FrameIndexSDNode>(getBasePtr().Val);
if (!getSrcValue() && FI)
- return MemOperand(&PseudoSourceValue::getFixedStack(), Flags,
+ return MemOperand(PseudoSourceValue::getFixedStack(), Flags,
FI->getIndex(), Size, Alignment);
else
return MemOperand(getSrcValue(), Flags,
Op.getOperand(0));
// STD the extended value into the stack slot.
- MemOperand MO(&PseudoSourceValue::getFixedStack(),
+ MemOperand MO(PseudoSourceValue::getFixedStack(),
MemOperand::MOStore, FrameIdx, 8, 8);
SDOperand Store = DAG.getNode(PPCISD::STD_32, MVT::Other,
DAG.getEntryNode(), Ext64, FIdx,
if (isByVal)
return FIN;
return DAG.getLoad(VA.getValVT(), Root, FIN,
- &PseudoSourceValue::getFixedStack(), FI);
+ PseudoSourceValue::getFixedStack(), FI);
}
SDOperand
SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::i64);
SDOperand Store =
DAG.getStore(Val.getValue(1), Val, FIN,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
RegSaveFrameIndex);
MemOps.push_back(Store);
FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN,
SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::v4f32);
SDOperand Store =
DAG.getStore(Val.getValue(1), Val, FIN,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
RegSaveFrameIndex);
MemOps.push_back(Store);
FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN,
return CreateCopyOfByValArgument(Arg, PtrOff, Chain, Flags, DAG);
}
return DAG.getStore(Chain, Arg, PtrOff,
- &PseudoSourceValue::getStack(), LocMemOffset);
+ PseudoSourceValue::getStack(), LocMemOffset);
}
/// ClassifyX86_64SRetCallReturn - Classify how to implement a x86-64
// Store relative to framepointer.
MemOpChains2.push_back(
DAG.getStore(Chain, Source, FIN,
- &PseudoSourceValue::getFixedStack(), FI));
+ PseudoSourceValue::getFixedStack(), FI));
}
}
}
// The same applies for external symbols during PIC codegen
if (Subtarget->GVRequiresExtraLoad(GV, getTargetMachine(), false))
Result = DAG.getLoad(getPointerTy(), DAG.getEntryNode(), Result,
- &PseudoSourceValue::getGOT(), 0);
+ PseudoSourceValue::getGOT(), 0);
return Result;
}
if (GA->getGlobal()->isDeclaration()) // initial exec TLS model
Offset = DAG.getLoad(PtrVT, DAG.getEntryNode(), Offset,
- &PseudoSourceValue::getGOT(), 0);
+ PseudoSourceValue::getGOT(), 0);
// The address of the thread local variable is the add of the thread
// pointer with the offset of the variable.
SDOperand StackSlot = DAG.getFrameIndex(SSFI, getPointerTy());
SDOperand Chain = DAG.getStore(DAG.getEntryNode(), Op.getOperand(0),
StackSlot,
- &PseudoSourceValue::getFixedStack(),
+ PseudoSourceValue::getFixedStack(),
SSFI);
// These are really Legal; caller falls through into that case.
Ops.push_back(InFlag);
Chain = DAG.getNode(X86ISD::FST, Tys, &Ops[0], Ops.size());
Result = DAG.getLoad(Op.getValueType(), Chain, StackSlot,
- &PseudoSourceValue::getFixedStack(), SSFI);
+ PseudoSourceValue::getFixedStack(), SSFI);
}
return Result;
if (isScalarFPTypeInSSEReg(Op.getOperand(0).getValueType())) {
assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!");
Chain = DAG.getStore(Chain, Value, StackSlot,
- &PseudoSourceValue::getFixedStack(), SSFI);
+ PseudoSourceValue::getFixedStack(), SSFI);
SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other);
SDOperand Ops[] = {
Chain, StackSlot, DAG.getValueType(Op.getOperand(0).getValueType())
Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
false, 16);
return DAG.getNode(X86ISD::FAND, VT, Op.getOperand(0), Mask);
}
Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
false, 16);
if (MVT::isVector(VT)) {
return DAG.getNode(ISD::BIT_CONVERT, VT,
Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask1 = DAG.getLoad(SrcVT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
false, 16);
SDOperand SignBit = DAG.getNode(X86ISD::FAND, SrcVT, Op1, Mask1);
C = ConstantVector::get(CV);
CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask2 = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
- &PseudoSourceValue::getConstantPool(), 0,
+ PseudoSourceValue::getConstantPool(), 0,
false, 16);
SDOperand Val = DAG.getNode(X86ISD::FAND, VT, Op0, Mask2);