forked from OSchip/llvm-project
[PPC] Try to fix builbots
Attempt to handle unsupported types, such as structs, in getMemoryOpCost. The backend now checks for a supported type and calls into BasicTTI as a fallback. BasicTTI will now also perform the same check and will default to an expensive cost of 4 for 'Other' MVTs. Differential Revision: https://reviews.llvm.org/D80984
This commit is contained in:
parent
68a8336bf2
commit
772349de88
|
@ -884,6 +884,9 @@ public:
|
|||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I = nullptr) {
|
||||
assert(!Src->isVoidTy() && "Invalid type");
|
||||
// Assume types, such as structs, are expensive.
|
||||
if (getTLI()->getValueType(DL, Src, true) == MVT::Other)
|
||||
return 4;
|
||||
std::pair<unsigned, MVT> LT = getTLI()->getTypeLegalizationCost(DL, Src);
|
||||
|
||||
// Assuming that all loads of legal types cost 1.
|
||||
|
|
|
@ -859,6 +859,9 @@ int PPCTTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
|
|||
MaybeAlign Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I) {
|
||||
if (TLI->getValueType(DL, Src, true) == MVT::Other)
|
||||
return BaseT::getMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||
CostKind);
|
||||
// Legalize the type.
|
||||
std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Src);
|
||||
assert((Opcode == Instruction::Load || Opcode == Instruction::Store) &&
|
||||
|
|
Loading…
Reference in New Issue