mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-20 14:29:27 +00:00
smallvectorize the list of returns built by CloneAndPruneFunctionInto.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80202 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
597ef10577
commit
ec1bea0d94
@ -18,7 +18,6 @@
|
||||
#ifndef LLVM_TRANSFORMS_UTILS_CLONING_H
|
||||
#define LLVM_TRANSFORMS_UTILS_CLONING_H
|
||||
|
||||
#include <vector>
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -39,6 +38,7 @@ class TargetData;
|
||||
class Loop;
|
||||
class LoopInfo;
|
||||
class LLVMContext;
|
||||
template <typename T> class SmallVectorImpl;
|
||||
|
||||
/// CloneModule - Return an exact copy of the specified module
|
||||
///
|
||||
@ -137,7 +137,7 @@ inline Function *CloneFunction(const Function *F, ClonedCodeInfo *CodeInfo = 0){
|
||||
///
|
||||
void CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
DenseMap<const Value*, Value*> &ValueMap,
|
||||
std::vector<ReturnInst*> &Returns,
|
||||
SmallVectorImpl<ReturnInst*> &Returns,
|
||||
const char *NameSuffix = "",
|
||||
ClonedCodeInfo *CodeInfo = 0);
|
||||
|
||||
@ -150,7 +150,7 @@ void CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
/// used for things like CloneFunction or CloneModule.
|
||||
void CloneAndPruneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
DenseMap<const Value*, Value*> &ValueMap,
|
||||
std::vector<ReturnInst*> &Returns,
|
||||
SmallVectorImpl<ReturnInst*> &Returns,
|
||||
const char *NameSuffix = "",
|
||||
ClonedCodeInfo *CodeInfo = 0,
|
||||
const TargetData *TD = 0);
|
||||
|
@ -73,7 +73,7 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB,
|
||||
//
|
||||
void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
DenseMap<const Value*, Value*> &ValueMap,
|
||||
std::vector<ReturnInst*> &Returns,
|
||||
SmallVectorImpl<ReturnInst*> &Returns,
|
||||
const char *NameSuffix, ClonedCodeInfo *CodeInfo) {
|
||||
assert(NameSuffix && "NameSuffix cannot be null!");
|
||||
|
||||
@ -166,7 +166,7 @@ Function *llvm::CloneFunction(const Function *F,
|
||||
ValueMap[I] = DestI++; // Add mapping to ValueMap
|
||||
}
|
||||
|
||||
std::vector<ReturnInst*> Returns; // Ignore returns cloned...
|
||||
SmallVector<ReturnInst*, 8> Returns; // Ignore returns cloned.
|
||||
CloneFunctionInto(NewF, F, ValueMap, Returns, "", CodeInfo);
|
||||
return NewF;
|
||||
}
|
||||
@ -180,7 +180,7 @@ namespace {
|
||||
Function *NewFunc;
|
||||
const Function *OldFunc;
|
||||
DenseMap<const Value*, Value*> &ValueMap;
|
||||
std::vector<ReturnInst*> &Returns;
|
||||
SmallVectorImpl<ReturnInst*> &Returns;
|
||||
const char *NameSuffix;
|
||||
ClonedCodeInfo *CodeInfo;
|
||||
const TargetData *TD;
|
||||
@ -188,7 +188,7 @@ namespace {
|
||||
public:
|
||||
PruningFunctionCloner(Function *newFunc, const Function *oldFunc,
|
||||
DenseMap<const Value*, Value*> &valueMap,
|
||||
std::vector<ReturnInst*> &returns,
|
||||
SmallVectorImpl<ReturnInst*> &returns,
|
||||
const char *nameSuffix,
|
||||
ClonedCodeInfo *codeInfo,
|
||||
const TargetData *td)
|
||||
@ -361,7 +361,7 @@ ConstantFoldMappedInstruction(const Instruction *I) {
|
||||
/// used for things like CloneFunction or CloneModule.
|
||||
void llvm::CloneAndPruneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
DenseMap<const Value*, Value*> &ValueMap,
|
||||
std::vector<ReturnInst*> &Returns,
|
||||
SmallVectorImpl<ReturnInst*> &Returns,
|
||||
const char *NameSuffix,
|
||||
ClonedCodeInfo *CodeInfo,
|
||||
const TargetData *TD) {
|
||||
@ -391,7 +391,7 @@ void llvm::CloneAndPruneFunctionInto(Function *NewFunc, const Function *OldFunc,
|
||||
// insert it into the new function in the right order. If not, ignore it.
|
||||
//
|
||||
// Defer PHI resolution until rest of function is resolved.
|
||||
std::vector<const PHINode*> PHIToResolve;
|
||||
SmallVector<const PHINode*, 16> PHIToResolve;
|
||||
for (Function::const_iterator BI = OldFunc->begin(), BE = OldFunc->end();
|
||||
BI != BE; ++BI) {
|
||||
BasicBlock *NewBB = cast_or_null<BasicBlock>(ValueMap[BI]);
|
||||
|
@ -108,7 +108,7 @@ Module *llvm::CloneModule(const Module *M,
|
||||
ValueMap[J] = DestI++;
|
||||
}
|
||||
|
||||
std::vector<ReturnInst*> Returns; // Ignore returns cloned...
|
||||
SmallVector<ReturnInst*, 8> Returns; // Ignore returns cloned.
|
||||
CloneFunctionInto(F, I, ValueMap, Returns);
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD) {
|
||||
|
||||
// Make sure to capture all of the return instructions from the cloned
|
||||
// function.
|
||||
std::vector<ReturnInst*> Returns;
|
||||
SmallVector<ReturnInst*, 8> Returns;
|
||||
ClonedCodeInfo InlinedFunctionInfo;
|
||||
Function::iterator FirstNewBlock;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user