diff options
Diffstat (limited to 'lib/Target/TargetMachine.cpp')
| -rw-r--r-- | lib/Target/TargetMachine.cpp | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index ad63c7a9cb304..c4c0dd22ee0c7 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -219,10 +219,8 @@ CodeGenOpt::Level TargetMachine::getOptLevel() const { return OptLevel; }  void TargetMachine::setOptLevel(CodeGenOpt::Level Level) { OptLevel = Level; } -TargetIRAnalysis TargetMachine::getTargetIRAnalysis() { -  return TargetIRAnalysis([](const Function &F) { -    return TargetTransformInfo(F.getParent()->getDataLayout()); -  }); +TargetTransformInfo TargetMachine::getTargetTransformInfo(const Function &F) { +  return TargetTransformInfo(F.getParent()->getDataLayout());  }  void TargetMachine::getNameWithPrefix(SmallVectorImpl<char> &Name, @@ -244,3 +242,10 @@ MCSymbol *TargetMachine::getSymbol(const GlobalValue *GV) const {    getNameWithPrefix(NameStr, GV, TLOF->getMangler());    return TLOF->getContext().getOrCreateSymbol(NameStr);  } + +TargetIRAnalysis TargetMachine::getTargetIRAnalysis() { +  // Since Analysis can't depend on Target, use a std::function to invert the +  // dependency. +  return TargetIRAnalysis( +      [this](const Function &F) { return this->getTargetTransformInfo(F); }); +}  | 
