mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 03:30:28 +00:00
6899b31422
This interface allows clients to inline bunch of functions with module level call graph information.:wq git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40486 91177308-0d34-0410-b5e6-96231b3b80d8
56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
//===- BasicInliner.h - Basic function level inliner ------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file was developed by Devang Patel and is distributed under
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines a simple function based inliner that does not use
|
|
// call graph information.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef BASICINLINER_H
|
|
#define BASICINLINER_H
|
|
|
|
#include "llvm/Transforms/Utils/InlineCost.h"
|
|
|
|
namespace llvm {
|
|
|
|
class Function;
|
|
class TargetData;
|
|
class BasicInlinerImpl;
|
|
|
|
/// BasicInliner - BasicInliner provides function level inlining interface.
|
|
/// Clients provide list of functions which are inline without using
|
|
/// module level call graph information. Note that the BasicInliner is
|
|
/// free to delete a function if it is inlined into all call sites.
|
|
class BasicInliner {
|
|
public:
|
|
|
|
BasicInliner(TargetData *T = NULL);
|
|
~BasicInliner();
|
|
|
|
/// addFunction - Add function into the list of functions to process.
|
|
/// All functions must be inserted using this interface before invoking
|
|
/// inlineFunctions().
|
|
void addFunction(Function *F);
|
|
|
|
/// neverInlineFunction - Sometimes a function is never to be inlined
|
|
/// because of one or other reason.
|
|
void neverInlineFunction(Function *F);
|
|
|
|
/// inlineFuctions - Walk all call sites in all functions supplied by
|
|
/// client. Inline as many call sites as possible. Delete completely
|
|
/// inlined functions.
|
|
void inlineFunctions();
|
|
|
|
private:
|
|
BasicInlinerImpl *Impl;
|
|
};
|
|
}
|
|
|
|
#endif
|