From: Chandler Carruth Date: Sat, 31 Jan 2015 11:18:46 +0000 (+0000) Subject: [PM] Update Clang for the new LLVM API in r227685 for managing the X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=80084529c667ef6bb1a12dd09ec98842838ba498;p=clang [PM] Update Clang for the new LLVM API in r227685 for managing the TargetTransformInfo, and unify the code in a single place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227686 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/BackendUtil.cpp b/lib/CodeGen/BackendUtil.cpp index 702383572c..6df34af86e 100644 --- a/lib/CodeGen/BackendUtil.cpp +++ b/lib/CodeGen/BackendUtil.cpp @@ -16,6 +16,7 @@ #include "clang/Frontend/Utils.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Analysis/TargetLibraryInfo.h" +#include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/Bitcode/BitcodeWriterPass.h" #include "llvm/CodeGen/RegAllocRegistry.h" #include "llvm/CodeGen/SchedulerRegistry.h" @@ -60,12 +61,18 @@ class EmitAssemblyHelper { mutable FunctionPassManager *PerFunctionPasses; private: + TargetTransformInfo getTTI() const { + if (TM) + return TM->getTTI(); + + return TargetTransformInfo(TheModule->getDataLayout()); + } + PassManager *getCodeGenPasses() const { if (!CodeGenPasses) { CodeGenPasses = new PassManager(); CodeGenPasses->add(new DataLayoutPass()); - if (TM) - TM->addAnalysisPasses(*CodeGenPasses); + CodeGenPasses->add(createTargetTransformInfoWrapperPass(getTTI())); } return CodeGenPasses; } @@ -74,8 +81,7 @@ private: if (!PerModulePasses) { PerModulePasses = new PassManager(); PerModulePasses->add(new DataLayoutPass()); - if (TM) - TM->addAnalysisPasses(*PerModulePasses); + PerModulePasses->add(createTargetTransformInfoWrapperPass(getTTI())); } return PerModulePasses; } @@ -84,8 +90,7 @@ private: if (!PerFunctionPasses) { PerFunctionPasses = new FunctionPassManager(TheModule); PerFunctionPasses->add(new DataLayoutPass()); - if (TM) - TM->addAnalysisPasses(*PerFunctionPasses); + PerFunctionPasses->add(createTargetTransformInfoWrapperPass(getTTI())); } return PerFunctionPasses; } @@ -547,9 +552,6 @@ bool EmitAssemblyHelper::AddEmitPasses(BackendAction Action, createTLII(TargetTriple, CodeGenOpts)); PM->add(new TargetLibraryInfoWrapperPass(*TLII)); - // Add Target specific analysis passes. - TM->addAnalysisPasses(*PM); - // Normal mode, emit a .s or .o file by running the code generator. Note, // this also adds codegenerator level optimization passes. TargetMachine::CodeGenFileType CGFT = TargetMachine::CGFT_AssemblyFile;