mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Add BasicInliner interface.
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
This commit is contained in:
55
include/llvm/Transforms/Utils/BasicInliner.h
Normal file
55
include/llvm/Transforms/Utils/BasicInliner.h
Normal file
@@ -0,0 +1,55 @@
|
||||
//===- 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
|
Reference in New Issue
Block a user