[llvm-commits] CVS: llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp Heuristic.cpp PointerCompress.cpp PoolAllocate.cpp PoolOptimize.cpp TransformFunctionBody.cpp
Andrew Lenharth
alenhar2 at cs.uiuc.edu
Wed Apr 11 10:28:11 PDT 2007
Changes in directory llvm-poolalloc/lib/PoolAllocate:
AccessTrace.cpp updated: 1.9 -> 1.10
Heuristic.cpp updated: 1.17 -> 1.18
PointerCompress.cpp updated: 1.76 -> 1.77
PoolAllocate.cpp updated: 1.133 -> 1.134
PoolOptimize.cpp updated: 1.11 -> 1.12
TransformFunctionBody.cpp updated: 1.61 -> 1.62
---
Log message:
unbitrot this, it might even still work, who knows
---
Diffs of the changes: (+68 -99)
AccessTrace.cpp | 6 ++--
Heuristic.cpp | 4 +-
PointerCompress.cpp | 64 ++++++++++++++++------------------------------
PoolAllocate.cpp | 29 ++++++++++----------
PoolOptimize.cpp | 29 +++++++-------------
TransformFunctionBody.cpp | 35 +++++++++++--------------
6 files changed, 68 insertions(+), 99 deletions(-)
Index: llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp:1.9 llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp:1.10
--- llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp:1.9 Wed Jan 10 14:44:31 2007
+++ llvm-poolalloc/lib/PoolAllocate/AccessTrace.cpp Wed Apr 11 12:27:53 2007
@@ -100,14 +100,14 @@
// Create the function prototypes for runtime library.
InitializeLibraryFunctions(M);
- Function *MainFunc = M.getMainFunction();
- if (MainFunc && !MainFunc->isExternal())
+ Function *MainFunc = M.getFunction("main");
+ if (MainFunc && !MainFunc->isDeclaration())
// Insert a call to the library init function into the beginning of main.
new CallInst(AccessTraceInitFn, "", MainFunc->begin()->begin());
// Look at all of the loads in the program.
for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
- if (F->isExternal()) continue;
+ if (F->isDeclaration()) continue;
PA::FuncInfo *FI = PoolAlloc->getFuncInfoOrClone(*F);
assert(FI && "DIDN'T FIND POOL INFO!");
Index: llvm-poolalloc/lib/PoolAllocate/Heuristic.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/Heuristic.cpp:1.17 llvm-poolalloc/lib/PoolAllocate/Heuristic.cpp:1.18
--- llvm-poolalloc/lib/PoolAllocate/Heuristic.cpp:1.17 Wed Jan 10 14:44:31 2007
+++ llvm-poolalloc/lib/PoolAllocate/Heuristic.cpp Wed Apr 11 12:27:53 2007
@@ -74,7 +74,7 @@
// If we are on a 64-bit system, we want to align 8-byte integers and
// pointers.
- if (TD.getTypeAlignment(Ty) == 8)
+ if (TD.getPrefTypeAlignment(Ty) == 8)
return true;
}
@@ -85,7 +85,7 @@
const StructLayout *SL = TD.getStructLayout(STy);
for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i) {
if (Wants8ByteAlignment(STy->getElementType(i),
- Offs+SL->MemberOffsets[i], TD))
+ Offs+SL->getElementOffset(i), TD))
return true;
}
} else if (const SequentialType *STy = dyn_cast<SequentialType>(Ty)) {
Index: llvm-poolalloc/lib/PoolAllocate/PointerCompress.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.76 llvm-poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.77
--- llvm-poolalloc/lib/PoolAllocate/PointerCompress.cpp:1.76 Wed Jan 10 14:44:31 2007
+++ llvm-poolalloc/lib/PoolAllocate/PointerCompress.cpp Wed Apr 11 12:27:53 2007
@@ -263,7 +263,7 @@
for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i)
Elements.push_back(ComputeCompressedType(STy->getElementType(i),
- NodeOffset+SL->MemberOffsets[i],
+ NodeOffset+SL->getElementOffset(i),
Nodes));
return StructType::get(Elements);
} else if (const ArrayType *ATy = dyn_cast<ArrayType>(OrigTy)) {
@@ -707,7 +707,7 @@
uint64_t Field = (unsigned)cast<ConstantInt>(Idx)->getZExtValue();
if (Field) {
uint64_t FieldOffs = TD.getStructLayout(cast<StructType>(NTy))
- ->MemberOffsets[Field];
+ ->getElementOffset(Field);
Constant *FieldOffsCst = ConstantInt::get(SCALARUINTTYPE, FieldOffs);
Val = BinaryOperator::createAdd(Val, FieldOffsCst,
GEPI.getName(), &GEPI);
@@ -765,10 +765,9 @@
Value *BasePtr = SrcPI->EmitPoolBaseLoad(LI);
// Get the pointer to load from.
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(LI.getOperand(0)));
- if (Ops[0]->getType() == Type::Int16Ty)
- Ops[0] = CastInst::createZExtOrBitCast(Ops[0], Type::Int32Ty, "extend_idx", &LI);
+ Value* Ops = getTransformedValue(LI.getOperand(0));
+ if (Ops->getType() == Type::Int16Ty)
+ Ops = CastInst::createZExtOrBitCast(Ops, Type::Int32Ty, "extend_idx", &LI);
Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
LI.getOperand(0)->getName()+".pp", &LI);
const Type *DestTy = LoadingCompressedPtr ? MEMUINTTYPE : LI.getType();
@@ -831,10 +830,9 @@
Value *BasePtr = DestPI->EmitPoolBaseLoad(SI);
// Get the pointer to store to.
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(SI.getOperand(1)));
- if (Ops[0]->getType() == Type::Int16Ty)
- Ops[0] = CastInst::createZExtOrBitCast(Ops[0], Type::Int32Ty, "extend_idx", &SI);
+ Value* Ops = getTransformedValue(SI.getOperand(1));
+ if (Ops->getType() == Type::Int16Ty)
+ Ops = CastInst::createZExtOrBitCast(Ops, Type::Int32Ty, "extend_idx", &SI);
Value *DestPtr = new GetElementPtrInst(BasePtr, Ops,
SI.getOperand(1)->getName()+".pp",
@@ -866,7 +864,7 @@
Ops.push_back(ConstantInt::get(Type::Int32Ty,
PA::Heuristic::getRecommendedAlignment(PI->getNewType(), TD)));
// TODO: Compression could reduce the alignment restriction for the pool!
- Value *PB = new CallInst(PtrComp.PoolInitPC, Ops, "", &CI);
+ Value *PB = new CallInst(PtrComp.PoolInitPC, &Ops[0], Ops.size(), "", &CI);
if (!DisablePoolBaseASR) { // Load the pool base immediately.
PB->setName(CI.getOperand(1)->getName()+".poolbase");
@@ -883,9 +881,7 @@
const CompressedPoolInfo *PI = getPoolInfoForPoolDesc(CI.getOperand(1));
if (PI == 0) return; // Pool isn't compressed.
- std::vector<Value*> Ops;
- Ops.push_back(CI.getOperand(1));
- new CallInst(PtrComp.PoolDestroyPC, Ops, "", &CI);
+ new CallInst(PtrComp.PoolDestroyPC, CI.getOperand(1), "", &CI);
CI.eraseFromParent();
}
@@ -893,9 +889,6 @@
const CompressedPoolInfo *PI = getPoolInfo(&CI);
if (PI == 0) return; // Pool isn't compressed.
- std::vector<Value*> Ops;
- Ops.push_back(CI.getOperand(1)); // PD
-
Value *Size = CI.getOperand(2);
// If there was a recommended size, shrink it down now.
@@ -913,8 +906,7 @@
Size = BinaryOperator::createMul(Size, NewSize, "newbytes", &CI);
}
- Ops.push_back(Size);
- Value *NC = new CallInst(PtrComp.PoolAllocPC, Ops, CI.getName(), &CI);
+ Value *NC = new CallInst(PtrComp.PoolAllocPC, CI.getOperand(1), Size, CI.getName(), &CI);
setTransformedValue(CI, NC);
}
@@ -953,7 +945,7 @@
// Indirect call: you CAN'T passed compress pointers in. Don't even think
// about it.
return;
- } else if (Callee->isExternal()) {
+ } else if (Callee->isDeclaration()) {
// We don't have a DSG for the callee in this case. Assume that things will
// work out if we pass compressed pointers.
std::vector<Value*> Operands;
@@ -969,10 +961,8 @@
return;
} else if (Callee->getName() == "read") {
if (const CompressedPoolInfo *DestPI = getPoolInfo(CI.getOperand(2))) {
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(CI.getOperand(2)));
Value *BasePtr = DestPI->EmitPoolBaseLoad(CI);
- Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
+ Value *SrcPtr = new GetElementPtrInst(BasePtr, getTransformedValue(CI.getOperand(2)),
CI.getOperand(2)->getName()+".pp", &CI);
SrcPtr = CastInst::createPointerCast(SrcPtr, CI.getOperand(2)->getType(), "", &CI);
CI.setOperand(2, SrcPtr);
@@ -980,10 +970,8 @@
}
} else if (Callee->getName() == "fwrite") {
if (const CompressedPoolInfo *DestPI = getPoolInfo(CI.getOperand(1))) {
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(CI.getOperand(1)));
Value *BasePtr = DestPI->EmitPoolBaseLoad(CI);
- Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
+ Value *SrcPtr = new GetElementPtrInst(BasePtr, getTransformedValue(CI.getOperand(1)),
CI.getOperand(1)->getName()+".pp", &CI);
SrcPtr = CastInst::createPointerCast(SrcPtr, CI.getOperand(1)->getType(), "", &CI);
CI.setOperand(1, SrcPtr);
@@ -993,10 +981,8 @@
Callee->getName() == "llvm.memset.i32" ||
Callee->getName() == "llvm.memset.i64") {
if (const CompressedPoolInfo *DestPI = getPoolInfo(CI.getOperand(1))) {
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(CI.getOperand(1)));
Value *BasePtr = DestPI->EmitPoolBaseLoad(CI);
- Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
+ Value *SrcPtr = new GetElementPtrInst(BasePtr, getTransformedValue(CI.getOperand(1)),
CI.getOperand(1)->getName()+".pp", &CI);
SrcPtr = CastInst::createPointerCast(SrcPtr, CI.getOperand(1)->getType(), "", &CI);
CI.setOperand(1, SrcPtr);
@@ -1007,20 +993,16 @@
Callee->getName() == "llvm.memcpy.i64") {
bool doret = false;
if (const CompressedPoolInfo *DestPI = getPoolInfo(CI.getOperand(1))) {
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(CI.getOperand(1)));
Value *BasePtr = DestPI->EmitPoolBaseLoad(CI);
- Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
+ Value *SrcPtr = new GetElementPtrInst(BasePtr, getTransformedValue(CI.getOperand(1)),
CI.getOperand(1)->getName()+".pp", &CI);
SrcPtr = CastInst::createPointerCast(SrcPtr, CI.getOperand(1)->getType(), "", &CI);
CI.setOperand(1, SrcPtr);
doret = true;
}
if (const CompressedPoolInfo *DestPI = getPoolInfo(CI.getOperand(2))) {
- std::vector<Value*> Ops;
- Ops.push_back(getTransformedValue(CI.getOperand(2)));
Value *BasePtr = DestPI->EmitPoolBaseLoad(CI);
- Value *SrcPtr = new GetElementPtrInst(BasePtr, Ops,
+ Value *SrcPtr = new GetElementPtrInst(BasePtr, getTransformedValue(CI.getOperand(2)),
CI.getOperand(2)->getName()+".pp", &CI);
SrcPtr = CastInst::createPointerCast(SrcPtr, CI.getOperand(2)->getType(), "", &CI);
CI.setOperand(2, SrcPtr);
@@ -1049,7 +1031,7 @@
}
Function *Clone = PtrComp.GetExtFunctionClone(Callee, CompressedArgs);
- Value *NC = new CallInst(Clone, Operands, CI.getName(), &CI);
+ Value *NC = new CallInst(Clone, &Operands[0], Operands.size(), CI.getName(), &CI);
if (NC->getType() != CI.getType()) // Compressing return value?
setTransformedValue(CI, NC);
else {
@@ -1126,7 +1108,7 @@
else
Operands.push_back(CI.getOperand(i));
- Value *NC = new CallInst(Clone, Operands, CI.getName(), &CI);
+ Value *NC = new CallInst(Clone, &Operands[0], Operands.size(), CI.getName(), &CI);
if (NC->getType() != CI.getType()) // Compressing return value?
setTransformedValue(CI, NC);
else {
@@ -1245,7 +1227,7 @@
CompressPoolsInFunction(Function &F,
std::vector<std::pair<Value*, Value*> > *PremappedVals,
std::set<const DSNode*> *ExternalPoolsToCompress){
- if (F.isExternal()) return false;
+ if (F.isDeclaration()) return false;
// If this is a pointer compressed clone of a pool allocated function, get the
// the pool allocated function. Rewriting a clone means that there are
@@ -1423,12 +1405,12 @@
std::cerr << " CLONING FUNCTION: " << F->getName() << " -> "
<< Clone->getName() << "\n";
- if (F->isExternal()) {
+ if (F->isDeclaration()) {
Clone->setLinkage(GlobalValue::ExternalLinkage);
return Clone;
}
- std::map<const Value*, Value*> ValueMap;
+ DenseMap<const Value*, Value*> ValueMap;
// Create dummy Value*'s of pointer type for any arguments that are
// compressed. These are needed to satisfy typing constraints before the
@@ -1462,7 +1444,7 @@
// Invert the ValueMap into the NewToOldValueMap
std::map<Value*, const Value*> &NewToOldValueMap = CFI.NewToOldValueMap;
- for (std::map<const Value*, Value*>::iterator I = ValueMap.begin(),
+ for (DenseMap<const Value*, Value*>::iterator I = ValueMap.begin(),
E = ValueMap.end(); I != E; ++I)
NewToOldValueMap.insert(std::make_pair(I->second, I->first));
Index: llvm-poolalloc/lib/PoolAllocate/PoolAllocate.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.133 llvm-poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.134
--- llvm-poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.133 Mon Jan 22 10:41:10 2007
+++ llvm-poolalloc/lib/PoolAllocate/PoolAllocate.cpp Wed Apr 11 12:27:53 2007
@@ -128,7 +128,7 @@
// Loop over the functions in the original program finding the pool desc.
// arguments necessary for each function that is indirectly callable.
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
- if (!I->isExternal() && ECGraphs->ContainsDSGraphFor(*I))
+ if (!I->isDeclaration() && ECGraphs->ContainsDSGraphFor(*I))
FindFunctionPoolArgs(*I);
std::map<Function*, Function*> FuncMap;
@@ -140,7 +140,7 @@
std::set<Function*> ClonedFunctions;
{TIME_REGION(X, "MakeFunctionClone");
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
- if (!I->isExternal() && !ClonedFunctions.count(I) &&
+ if (!I->isDeclaration() && !ClonedFunctions.count(I) &&
ECGraphs->ContainsDSGraphFor(*I))
if (Function *Clone = MakeFunctionClone(*I)) {
FuncMap[I] = Clone;
@@ -152,7 +152,7 @@
// clones.
{TIME_REGION(X, "ProcessFunctionBody");
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
- if (!I->isExternal() && !ClonedFunctions.count(I) &&
+ if (!I->isDeclaration() && !ClonedFunctions.count(I) &&
ECGraphs->ContainsDSGraphFor(*I)) {
std::map<Function*, Function*>::iterator FI = FuncMap.find(I);
ProcessFunctionBody(*I, FI != FuncMap.end() ? *FI->second : *I);
@@ -409,9 +409,9 @@
// Map the existing arguments of the old function to the corresponding
// arguments of the new function, and copy over the names.
#ifdef SAFECODE
- std::map<const Value*, Value*> &ValueMap = FI.ValueMap;
+ DenseMap<const Value*, Value*> &ValueMap = FI.ValueMap;
#else
- std::map<const Value*, Value*> ValueMap;
+ DenseMap<const Value*, Value*> ValueMap;
#endif
for (Function::arg_iterator I = F.arg_begin();
NI != New->arg_end(); ++I, ++NI) {
@@ -427,7 +427,7 @@
// Invert the ValueMap into the NewToOldValueMap
std::map<Value*, const Value*> &NewToOldValueMap = FI.NewToOldValueMap;
- for (std::map<const Value*, Value*>::iterator I = ValueMap.begin(),
+ for (DenseMap<const Value*, Value*>::iterator I = ValueMap.begin(),
E = ValueMap.end(); I != E; ++I)
NewToOldValueMap.insert(std::make_pair(I->second, I->first));
return FI.Clone = New;
@@ -469,8 +469,8 @@
}
// Otherwise get the main function to insert the poolinit calls.
- Function *MainFunc = M.getMainFunction();
- if (MainFunc == 0 || MainFunc->isExternal()) {
+ Function *MainFunc = M.getFunction("main");
+ if (MainFunc == 0 || MainFunc->isDeclaration()) {
std::cerr << "Cannot pool allocate this program: it has global "
<< "pools but no 'main' function yet!\n";
return true;
@@ -532,7 +532,7 @@
DSNode *GNode = ECGraphs->getGlobalsGraph().addObjectToGraph(GV);
GNode->setModifiedMarker()->setReadMarker();
- Function *MainFunc = CurModule->getMainFunction();
+ Function *MainFunc = CurModule->getFunction("main");
assert(MainFunc && "No main in program??");
BasicBlock::iterator InsertPt;
@@ -545,8 +545,8 @@
Value *ElSize = ConstantInt::get(Type::Int32Ty, RecSize);
Value *AlignV = ConstantInt::get(Type::Int32Ty, Align);
- new CallInst(PoolInit, make_vector((Value*)GV, ElSize, AlignV, 0),
- "", InsertPt);
+ Value* Opts[3] = {GV, ElSize, AlignV};
+ new CallInst(PoolInit, &Opts[0], 3, "", InsertPt);
++NumPools;
return GV;
}
@@ -886,8 +886,8 @@
Value *Align = ConstantInt::get(Type::Int32Ty, AlignV);
for (unsigned i = 0, e = PoolInitPoints.size(); i != e; ++i) {
- new CallInst(PoolInit, make_vector((Value*)PD, ElSize, Align, 0),
- "", PoolInitPoints[i]);
+ Value* Opts[3] = {PD, ElSize, Align};
+ new CallInst(PoolInit, &Opts[0], 3, "", PoolInitPoints[i]);
DEBUG(std::cerr << PoolInitPoints[i]->getParent()->getName() << " ");
}
@@ -896,8 +896,7 @@
// Loop over all of the places to insert pooldestroy's...
for (unsigned i = 0, e = PoolDestroyPoints.size(); i != e; ++i) {
// Insert the pooldestroy call for this pool.
- new CallInst(PoolDestroy, make_vector((Value*)PD, 0), "",
- PoolDestroyPoints[i]);
+ new CallInst(PoolDestroy, PD, "", PoolDestroyPoints[i]);
DEBUG(std::cerr << PoolDestroyPoints[i]->getParent()->getName()<<" ");
}
DEBUG(std::cerr << "\n\n");
Index: llvm-poolalloc/lib/PoolAllocate/PoolOptimize.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/PoolOptimize.cpp:1.11 llvm-poolalloc/lib/PoolAllocate/PoolOptimize.cpp:1.12
--- llvm-poolalloc/lib/PoolAllocate/PoolOptimize.cpp:1.11 Wed Jan 10 14:44:32 2007
+++ llvm-poolalloc/lib/PoolAllocate/PoolOptimize.cpp Wed Apr 11 12:27:53 2007
@@ -18,6 +18,7 @@
#include "llvm/Module.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Support/Debug.h"
+#include <set>
using namespace llvm;
namespace {
@@ -108,27 +109,20 @@
CallInst *CI = Calls[i];
// poolrealloc(PD, null, X) -> poolalloc(PD, X)
if (isa<ConstantPointerNull>(CI->getOperand(2))) {
- std::vector<Value*> Ops;
- Ops.push_back(CI->getOperand(1));
- Ops.push_back(CI->getOperand(3));
- Value *New = new CallInst(PoolAlloc, Ops, CI->getName(), CI);
+ Value *New = new CallInst(PoolAlloc, CI->getOperand(1), CI->getOperand(3),
+ CI->getName(), CI);
CI->replaceAllUsesWith(New);
CI->eraseFromParent();
} else if (isa<Constant>(CI->getOperand(3)) &&
cast<Constant>(CI->getOperand(3))->isNullValue()) {
// poolrealloc(PD, X, 0) -> poolfree(PD, X)
- std::vector<Value*> Ops;
- Ops.push_back(CI->getOperand(1));
- Ops.push_back(CI->getOperand(2));
- new CallInst(PoolFree, Ops, "", CI);
+ new CallInst(PoolFree, CI->getOperand(1), CI->getOperand(2), "", CI);
CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
CI->eraseFromParent();
} else if (isa<ConstantPointerNull>(CI->getOperand(1))) {
// poolrealloc(null, X, Y) -> realloc(X, Y)
- std::vector<Value*> Ops;
- Ops.push_back(CI->getOperand(2));
- Ops.push_back(CI->getOperand(3));
- Value *New = new CallInst(Realloc, Ops, CI->getName(), CI);
+ Value *New = new CallInst(Realloc, CI->getOperand(2), CI->getOperand(3),
+ CI->getName(), CI);
CI->replaceAllUsesWith(New);
CI->eraseFromParent();
}
@@ -154,10 +148,7 @@
CallInst *CI = Calls[i];
// poolmemalign(null, X, Y) -> memalign(X, Y)
if (isa<ConstantPointerNull>(CI->getOperand(1))) {
- std::vector<Value*> Ops;
- Ops.push_back(CI->getOperand(2));
- Ops.push_back(CI->getOperand(3));
- Value *New = new CallInst(MemAlign, Ops, CI->getName(), CI);
+ Value *New = new CallInst(MemAlign, CI->getOperand(2), CI->getOperand(3), CI->getName(), CI);
CI->replaceAllUsesWith(New);
CI->eraseFromParent();
}
@@ -228,18 +219,18 @@
std::vector<Value*> Args;
if (CI->getCalledFunction() == PoolAlloc) {
Args.assign(CI->op_begin()+1, CI->op_end());
- Value *New = new CallInst(PoolAllocBP, Args, CI->getName(), CI);
+ Value *New = new CallInst(PoolAllocBP, &Args[0], Args.size(), CI->getName(), CI);
CI->replaceAllUsesWith(New);
CI->eraseFromParent();
} else if (CI->getCalledFunction() == PoolInit) {
Args.assign(CI->op_begin()+1, CI->op_end());
Args.erase(Args.begin()+1); // Drop the size argument.
- new CallInst(PoolInitBP, Args, "", CI);
+ new CallInst(PoolInitBP, &Args[0], Args.size(), "", CI);
CI->eraseFromParent();
} else {
assert(CI->getCalledFunction() == PoolDestroy);
Args.assign(CI->op_begin()+1, CI->op_end());
- new CallInst(PoolDestroyBP, Args, "", CI);
+ new CallInst(PoolDestroyBP, &Args[0], Args.size(), "", CI);
CI->eraseFromParent();
}
}
Index: llvm-poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp
diff -u llvm-poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.61 llvm-poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.62
--- llvm-poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp:1.61 Wed Jan 10 14:44:32 2007
+++ llvm-poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp Wed Apr 11 12:27:53 2007
@@ -155,8 +155,7 @@
// Insert a call to poolalloc
Value *PH = getPoolHandle(I);
- Instruction *V = new CallInst(PAInfo.PoolAlloc, make_vector(PH, Size, 0),
- Name, I);
+ Instruction *V = new CallInst(PAInfo.PoolAlloc, PH, Size, Name, I);
AddPoolUse(*V, PH, PoolUses);
@@ -269,8 +268,7 @@
G.getScalarMap()[Casted] = G.getScalarMap()[Arg];
}
- CallInst *FreeI = new CallInst(PAInfo.PoolFree, make_vector(PH, Casted, 0),
- "", Where);
+ CallInst *FreeI = new CallInst(PAInfo.PoolFree, PH, Casted, "", Where);
AddPoolUse(*FreeI, PH, PoolFrees);
return FreeI;
}
@@ -329,9 +327,9 @@
BBI);
// We know that the memory returned by poolalloc is at least 4 byte aligned.
- new CallInst(MemSet, make_vector(Ptr, ConstantInt::get(Type::Int8Ty, 0),
- V2, ConstantInt::get(Type::Int32Ty, 4), 0),
- "", BBI);
+ Value* Opts[4] = {Ptr, ConstantInt::get(Type::Int8Ty, 0),
+ V2, ConstantInt::get(Type::Int32Ty, 4)};
+ new CallInst(MemSet, Opts, 4, "", BBI);
}
@@ -350,9 +348,8 @@
OldPtr = CastInst::createPointerCast(OldPtr, VoidPtrTy, OldPtr->getName(), I);
std::string Name = I->getName(); I->setName("");
- Instruction *V = new CallInst(PAInfo.PoolRealloc, make_vector(PH, OldPtr,
- Size, 0),
- Name, I);
+ Value* Opts[3] = {PH, OldPtr, Size};
+ Instruction *V = new CallInst(PAInfo.PoolRealloc, Opts, 3, Name, I);
Instruction *Casted = V;
if (V->getType() != I->getType())
Casted = CastInst::createPointerCast(V, I->getType(), V->getName(), I);
@@ -419,8 +416,8 @@
Size = CastInst::createZExtOrBitCast(Size, Type::Int32Ty, Size->getName(), I);
std::string Name = I->getName(); I->setName("");
- Instruction *V = new CallInst(PAInfo.PoolMemAlign,
- make_vector(PH, Align, Size, 0), Name, I);
+ Value* Opts[3] = {PH, Align, Size};
+ Instruction *V = new CallInst(PAInfo.PoolMemAlign, Opts, 3, Name, I);
Instruction *Casted = V;
if (V->getType() != I->getType())
@@ -471,7 +468,7 @@
// If this function is one of the memory manipulating functions built into
// libc, emulate it with pool calls as appropriate.
- if (CF && CF->isExternal())
+ if (CF && CF->isDeclaration())
if (CF->getName() == "calloc") {
visitCallocCall(CS);
return;
@@ -581,7 +578,7 @@
EquivClassGraphs::callee_iterator I =
ECGraphs.callee_begin(OrigInst), E = ECGraphs.callee_end(OrigInst);
for (; I != E; ++I)
- if (!I->second->isExternal())
+ if (!I->second->isDeclaration())
assert(CalleeGraph == &ECGraphs.getDSGraph(*I->second) &&
"Callees at call site do not have a common graph!");
#endif
@@ -655,9 +652,9 @@
ArgVal = new AllocaInst(ArrayType::get(VoidPtrTy, 16), 0, "PD", InsertPt);
Value *ElSize = ConstantInt::get(Type::Int32Ty,0);
Value *Align = ConstantInt::get(Type::Int32Ty,0);
- new CallInst(PAInfo.PoolInit, make_vector(ArgVal, ElSize, Align, 0),"", TheCall);
- new CallInst(PAInfo.PoolDestroy, make_vector(ArgVal, 0), "",
- TheCall->getNext());
+ Value* Opts[3] = {ArgVal, ElSize, Align};
+ new CallInst(PAInfo.PoolInit, Opts, 3,"", TheCall);
+ new CallInst(PAInfo.PoolDestroy, ArgVal, "", TheCall->getNext());
}
//probably need to update DSG
// std::cerr << "WARNING: NULL POOL ARGUMENTS ARE PASSED IN!\n";
@@ -675,9 +672,9 @@
if (InvokeInst *II = dyn_cast<InvokeInst>(TheCall)) {
NewCall = new InvokeInst(NewCallee, II->getNormalDest(),
- II->getUnwindDest(), Args, Name, TheCall);
+ II->getUnwindDest(), &Args[0], Args.size(), Name, TheCall);
} else {
- NewCall = new CallInst(NewCallee, Args, Name, TheCall);
+ NewCall = new CallInst(NewCallee, &Args[0], Args.size(), Name, TheCall);
}
// Add all of the uses of the pool descriptor
More information about the llvm-commits
mailing list