1 //===- llvm/Analysis/FunctionTargetTransformInfo.h --------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This pass wraps a TargetTransformInfo in a FunctionPass so that it can
11 // forward along the current Function so that we can make target specific
12 // decisions based on the particular subtarget specified for each Function.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #include "llvm/InitializePasses.h"
17 #include "llvm/Analysis/FunctionTargetTransformInfo.h"
18 
19 using namespace llvm;
20 
21 #define DEBUG_TYPE "function-tti"
22 static const char ftti_name[] = "Function TargetTransformInfo";
23 INITIALIZE_PASS_BEGIN(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
24 INITIALIZE_AG_DEPENDENCY(TargetTransformInfo)
25 INITIALIZE_PASS_END(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
26 char FunctionTargetTransformInfo::ID = 0;
27 
28 namespace llvm {
createFunctionTargetTransformInfoPass()29 FunctionPass *createFunctionTargetTransformInfoPass() {
30   return new FunctionTargetTransformInfo();
31 }
32 }
33 
FunctionTargetTransformInfo()34 FunctionTargetTransformInfo::FunctionTargetTransformInfo()
35   : FunctionPass(ID), Fn(nullptr), TTI(nullptr) {
36   initializeFunctionTargetTransformInfoPass(*PassRegistry::getPassRegistry());
37 }
38 
getAnalysisUsage(AnalysisUsage & AU) const39 void FunctionTargetTransformInfo::getAnalysisUsage(AnalysisUsage &AU) const {
40   AU.setPreservesAll();
41   AU.addRequired<TargetTransformInfo>();
42 }
43 
releaseMemory()44 void FunctionTargetTransformInfo::releaseMemory() {}
45 
runOnFunction(Function & F)46 bool FunctionTargetTransformInfo::runOnFunction(Function &F) {
47   Fn = &F;
48   TTI = &getAnalysis<TargetTransformInfo>();
49   return false;
50 }
51