blob: a686bec4e73fc82d3498f34ac0526784d17dc3c6 [file] [log] [blame]
Stephen Hines37ed9c12014-12-01 14:51:49 -08001//===- 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
19using namespace llvm;
20
21#define DEBUG_TYPE "function-tti"
22static const char ftti_name[] = "Function TargetTransformInfo";
23INITIALIZE_PASS_BEGIN(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
24INITIALIZE_AG_DEPENDENCY(TargetTransformInfo)
25INITIALIZE_PASS_END(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
26char FunctionTargetTransformInfo::ID = 0;
27
28namespace llvm {
29FunctionPass *createFunctionTargetTransformInfoPass() {
30 return new FunctionTargetTransformInfo();
31}
32}
33
34FunctionTargetTransformInfo::FunctionTargetTransformInfo()
35 : FunctionPass(ID), Fn(nullptr), TTI(nullptr) {
36 initializeFunctionTargetTransformInfoPass(*PassRegistry::getPassRegistry());
37}
38
39void FunctionTargetTransformInfo::getAnalysisUsage(AnalysisUsage &AU) const {
40 AU.setPreservesAll();
41 AU.addRequired<TargetTransformInfo>();
42}
43
44void FunctionTargetTransformInfo::releaseMemory() {}
45
46bool FunctionTargetTransformInfo::runOnFunction(Function &F) {
47 Fn = &F;
48 TTI = &getAnalysis<TargetTransformInfo>();
49 return false;
50}