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/Transforms/Utils/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;