1 struct DataLayout;
2 struct TargetLoweringBase {
3   void getTypeLegalizationCost(const DataLayout &DL) const;
4 };
5 struct TargetTransformInfoImplBase {
6   const DataLayout &DL;
7 };
8 template <typename T>
9 struct TargetTransformInfoImplCRTPBase : public TargetTransformInfoImplBase {};
10 template <typename T>
11 struct BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
12   const TargetLoweringBase *getTLI() const;
13   using TargetTransformInfoImplBase::DL;
getArithmeticInstrCostBasicTTIImplBase14   void getArithmeticInstrCost() {
15     const TargetLoweringBase *TLI = getTLI();
16     TLI->getTypeLegalizationCost(DL);
17   }
18 };
19