llvm-6502/include/llvm/Transforms/Utils/BasicInliner.h
Hartmut Kaiser efd4a5144b Updated VC++ build system.
Silenced some VC warnings.

I'm getting linker errors, though: unresolved externals:

llvm::Split<class llvm::BasicBlock *,struct llvm::GraphTraits<class llvm::BasicBlock *> >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)

and

llvm::Split<struct llvm::Inverse<class llvm::BasicBlock *>,struct llvm::GraphTraits<struct llvm::Inverse<class llvm::BasicBlock *> > >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)

Where are these defined?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 14:56:40 +00:00

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;
struct 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