1
//===- BasicInliner.h - Basic function level inliner ------------*- C++ -*-===//
3
// The LLVM Compiler Infrastructure
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
8
//===----------------------------------------------------------------------===//
10
// This file defines a simple function based inliner that does not use
11
// call graph information.
13
//===----------------------------------------------------------------------===//
15
#ifndef BASICINLINER_H
16
#define BASICINLINER_H
18
#include "llvm/Analysis/InlineCost.h"
24
struct BasicInlinerImpl;
26
/// BasicInliner - BasicInliner provides function level inlining interface.
27
/// Clients provide list of functions which are inline without using
28
/// module level call graph information. Note that the BasicInliner is
29
/// free to delete a function if it is inlined into all call sites.
33
explicit BasicInliner(TargetData *T = NULL);
36
/// addFunction - Add function into the list of functions to process.
37
/// All functions must be inserted using this interface before invoking
38
/// inlineFunctions().
39
void addFunction(Function *F);
41
/// neverInlineFunction - Sometimes a function is never to be inlined
42
/// because of one or other reason.
43
void neverInlineFunction(Function *F);
45
/// inlineFuctions - Walk all call sites in all functions supplied by
46
/// client. Inline as many call sites as possible. Delete completely
47
/// inlined functions.
48
void inlineFunctions();
51
BasicInlinerImpl *Impl;