Finegrainify namespacification

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10131 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2003-11-21 20:23:48 +00:00
parent 23e1492bb1
commit 31f8499e83
13 changed files with 152 additions and 171 deletions

View File

@ -26,8 +26,7 @@
#include "Support/PostOrderIterator.h" #include "Support/PostOrderIterator.h"
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
#if 0 #if 0
#define SC_DEBUG(X) std::cerr << X #define SC_DEBUG(X) std::cerr << X
@ -363,5 +362,3 @@ int SlotCalculator::doInsertValue(const Value *D) {
SC_DEBUG("]\n"); SC_DEBUG("]\n");
return (int)DestSlot; return (int)DestSlot;
} }
} // End llvm namespace

View File

@ -32,8 +32,7 @@
#include "Support/StringExtras.h" #include "Support/StringExtras.h"
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
static RegisterPass<PrintModulePass> static RegisterPass<PrintModulePass>
X("printm", "Print module to stderr",PassInfo::Analysis|PassInfo::Optimization); X("printm", "Print module to stderr",PassInfo::Analysis|PassInfo::Optimization);
@ -233,8 +232,8 @@ static std::ostream &printTypeInt(std::ostream &Out, const Type *Ty,
// type, iff there is an entry in the modules symbol table for the specified // type, iff there is an entry in the modules symbol table for the specified
// type or one of it's component types. This is slower than a simple x << Type; // type or one of it's component types. This is slower than a simple x << Type;
// //
std::ostream &WriteTypeSymbolic(std::ostream &Out, const Type *Ty, std::ostream &llvm::WriteTypeSymbolic(std::ostream &Out, const Type *Ty,
const Module *M) { const Module *M) {
Out << " "; Out << " ";
// If they want us to print out a type, attempt to make it symbolic if there // If they want us to print out a type, attempt to make it symbolic if there
@ -447,7 +446,8 @@ static void WriteAsOperandInternal(std::ostream &Out, const Value *V,
// ostream. This can be useful when you just want to print int %reg126, not the // ostream. This can be useful when you just want to print int %reg126, not the
// whole instruction that generated it. // whole instruction that generated it.
// //
std::ostream &WriteAsOperand(std::ostream &Out, const Value *V, bool PrintType, std::ostream &llvm::WriteAsOperand(std::ostream &Out, const Value *V,
bool PrintType,
bool PrintName, const Module *Context) { bool PrintName, const Module *Context) {
std::map<const Type *, std::string> TypeNames; std::map<const Type *, std::string> TypeNames;
if (Context == 0) Context = getModuleFromVal(V); if (Context == 0) Context = getModuleFromVal(V);
@ -465,7 +465,7 @@ std::ostream &WriteAsOperand(std::ostream &Out, const Value *V, bool PrintType,
return Out; return Out;
} }
namespace llvm {
class AssemblyWriter { class AssemblyWriter {
std::ostream &Out; std::ostream &Out;
@ -520,7 +520,7 @@ private :
// which slot it occupies. // which slot it occupies.
void printInfoComment(const Value &V); void printInfoComment(const Value &V);
}; };
} // end of anonymous namespace
// printTypeAtLeastOneLevel - Print out one level of the possibly complex type // printTypeAtLeastOneLevel - Print out one level of the possibly complex type
// without considering any symbolic types that we may have equal to it. // without considering any symbolic types that we may have equal to it.
@ -1063,5 +1063,3 @@ CachedWriter &CachedWriter::operator<<(const Value *V) {
} }
return *this; return *this;
} }
} // End llvm namespace

View File

@ -19,8 +19,7 @@
#include "llvm/Module.h" #include "llvm/Module.h"
#include "Support/StringExtras.h" #include "Support/StringExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
ConstantBool *ConstantBool::True = new ConstantBool(true); ConstantBool *ConstantBool::True = new ConstantBool(true);
ConstantBool *ConstantBool::False = new ConstantBool(false); ConstantBool *ConstantBool::False = new ConstantBool(false);
@ -540,20 +539,22 @@ void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV,
// something strange that needs to be done to interface to the ctor for the // something strange that needs to be done to interface to the ctor for the
// constant. // constant.
// //
template<class ConstantClass, class TypeClass, class ValType> namespace llvm {
struct ConstantCreator { template<class ConstantClass, class TypeClass, class ValType>
static ConstantClass *create(const TypeClass *Ty, const ValType &V) { struct ConstantCreator {
return new ConstantClass(Ty, V); static ConstantClass *create(const TypeClass *Ty, const ValType &V) {
} return new ConstantClass(Ty, V);
}; }
};
template<class ConstantClass, class TypeClass> template<class ConstantClass, class TypeClass>
struct ConvertConstantType { struct ConvertConstantType {
static void convert(ConstantClass *OldC, const TypeClass *NewTy) { static void convert(ConstantClass *OldC, const TypeClass *NewTy) {
assert(0 && "This type cannot be converted!\n"); assert(0 && "This type cannot be converted!\n");
abort(); abort();
} }
}; };
}
namespace { namespace {
template<class ValType, class TypeClass, class ConstantClass> template<class ValType, class TypeClass, class ConstantClass>
@ -712,21 +713,21 @@ ConstantFP *ConstantFP::get(const Type *Ty, double V) {
//---- ConstantArray::get() implementation... //---- ConstantArray::get() implementation...
// //
namespace llvm {
template<> template<>
struct ConvertConstantType<ConstantArray, ArrayType> { struct ConvertConstantType<ConstantArray, ArrayType> {
static void convert(ConstantArray *OldC, const ArrayType *NewTy) { static void convert(ConstantArray *OldC, const ArrayType *NewTy) {
// Make everyone now use a constant of the new type... // Make everyone now use a constant of the new type...
std::vector<Constant*> C; std::vector<Constant*> C;
for (unsigned i = 0, e = OldC->getNumOperands(); i != e; ++i) for (unsigned i = 0, e = OldC->getNumOperands(); i != e; ++i)
C.push_back(cast<Constant>(OldC->getOperand(i))); C.push_back(cast<Constant>(OldC->getOperand(i)));
Constant *New = ConstantArray::get(NewTy, C); Constant *New = ConstantArray::get(NewTy, C);
assert(New != OldC && "Didn't replace constant??"); assert(New != OldC && "Didn't replace constant??");
OldC->uncheckedReplaceAllUsesWith(New); OldC->uncheckedReplaceAllUsesWith(New);
OldC->destroyConstant(); // This constant is now dead, destroy it. OldC->destroyConstant(); // This constant is now dead, destroy it.
} }
}; };
}
static ValueMap<std::vector<Constant*>, ArrayType, static ValueMap<std::vector<Constant*>, ArrayType,
ConstantArray> ArrayConstants; ConstantArray> ArrayConstants;
@ -778,20 +779,22 @@ std::string ConstantArray::getAsString() const {
//---- ConstantStruct::get() implementation... //---- ConstantStruct::get() implementation...
// //
template<> namespace llvm {
struct ConvertConstantType<ConstantStruct, StructType> { template<>
static void convert(ConstantStruct *OldC, const StructType *NewTy) { struct ConvertConstantType<ConstantStruct, StructType> {
// Make everyone now use a constant of the new type... static void convert(ConstantStruct *OldC, const StructType *NewTy) {
std::vector<Constant*> C; // Make everyone now use a constant of the new type...
for (unsigned i = 0, e = OldC->getNumOperands(); i != e; ++i) std::vector<Constant*> C;
C.push_back(cast<Constant>(OldC->getOperand(i))); for (unsigned i = 0, e = OldC->getNumOperands(); i != e; ++i)
Constant *New = ConstantStruct::get(NewTy, C); C.push_back(cast<Constant>(OldC->getOperand(i)));
assert(New != OldC && "Didn't replace constant??"); Constant *New = ConstantStruct::get(NewTy, C);
assert(New != OldC && "Didn't replace constant??");
OldC->uncheckedReplaceAllUsesWith(New); OldC->uncheckedReplaceAllUsesWith(New);
OldC->destroyConstant(); // This constant is now dead, destroy it. OldC->destroyConstant(); // This constant is now dead, destroy it.
} }
}; };
}
static ValueMap<std::vector<Constant*>, StructType, static ValueMap<std::vector<Constant*>, StructType,
ConstantStruct> StructConstants; ConstantStruct> StructConstants;
@ -811,24 +814,26 @@ void ConstantStruct::destroyConstant() {
//---- ConstantPointerNull::get() implementation... //---- ConstantPointerNull::get() implementation...
// //
// ConstantPointerNull does not take extra "value" argument... namespace llvm {
template<class ValType> // ConstantPointerNull does not take extra "value" argument...
struct ConstantCreator<ConstantPointerNull, PointerType, ValType> { template<class ValType>
static ConstantPointerNull *create(const PointerType *Ty, const ValType &V){ struct ConstantCreator<ConstantPointerNull, PointerType, ValType> {
return new ConstantPointerNull(Ty); static ConstantPointerNull *create(const PointerType *Ty, const ValType &V){
} return new ConstantPointerNull(Ty);
}; }
};
template<> template<>
struct ConvertConstantType<ConstantPointerNull, PointerType> { struct ConvertConstantType<ConstantPointerNull, PointerType> {
static void convert(ConstantPointerNull *OldC, const PointerType *NewTy) { static void convert(ConstantPointerNull *OldC, const PointerType *NewTy) {
// Make everyone now use a constant of the new type... // Make everyone now use a constant of the new type...
Constant *New = ConstantPointerNull::get(NewTy); Constant *New = ConstantPointerNull::get(NewTy);
assert(New != OldC && "Didn't replace constant??"); assert(New != OldC && "Didn't replace constant??");
OldC->uncheckedReplaceAllUsesWith(New); OldC->uncheckedReplaceAllUsesWith(New);
OldC->destroyConstant(); // This constant is now dead, destroy it. OldC->destroyConstant(); // This constant is now dead, destroy it.
} }
}; };
}
static ValueMap<char, PointerType, ConstantPointerNull> NullPtrConstants; static ValueMap<char, PointerType, ConstantPointerNull> NullPtrConstants;
@ -865,56 +870,58 @@ void ConstantPointerRef::destroyConstant() {
// //
typedef std::pair<unsigned, std::vector<Constant*> > ExprMapKeyType; typedef std::pair<unsigned, std::vector<Constant*> > ExprMapKeyType;
template<> namespace llvm {
struct ConstantCreator<ConstantExpr, Type, ExprMapKeyType> { template<>
static ConstantExpr *create(const Type *Ty, const ExprMapKeyType &V) { struct ConstantCreator<ConstantExpr, Type, ExprMapKeyType> {
if (V.first == Instruction::Cast) static ConstantExpr *create(const Type *Ty, const ExprMapKeyType &V) {
return new ConstantExpr(Instruction::Cast, V.second[0], Ty); if (V.first == Instruction::Cast)
if ((V.first >= Instruction::BinaryOpsBegin && return new ConstantExpr(Instruction::Cast, V.second[0], Ty);
V.first < Instruction::BinaryOpsEnd) || if ((V.first >= Instruction::BinaryOpsBegin &&
V.first == Instruction::Shl || V.first == Instruction::Shr) V.first < Instruction::BinaryOpsEnd) ||
return new ConstantExpr(V.first, V.second[0], V.second[1]); V.first == Instruction::Shl || V.first == Instruction::Shr)
return new ConstantExpr(V.first, V.second[0], V.second[1]);
assert(V.first == Instruction::GetElementPtr && "Invalid ConstantExpr!"); assert(V.first == Instruction::GetElementPtr && "Invalid ConstantExpr!");
std::vector<Constant*> IdxList(V.second.begin()+1, V.second.end()); std::vector<Constant*> IdxList(V.second.begin()+1, V.second.end());
return new ConstantExpr(V.second[0], IdxList, Ty); return new ConstantExpr(V.second[0], IdxList, Ty);
}
};
template<>
struct ConvertConstantType<ConstantExpr, Type> {
static void convert(ConstantExpr *OldC, const Type *NewTy) {
Constant *New;
switch (OldC->getOpcode()) {
case Instruction::Cast:
New = ConstantExpr::getCast(OldC->getOperand(0), NewTy);
break;
case Instruction::Shl:
case Instruction::Shr:
New = ConstantExpr::getShiftTy(NewTy, OldC->getOpcode(),
OldC->getOperand(0), OldC->getOperand(1));
break;
default:
assert(OldC->getOpcode() >= Instruction::BinaryOpsBegin &&
OldC->getOpcode() < Instruction::BinaryOpsEnd);
New = ConstantExpr::getTy(NewTy, OldC->getOpcode(), OldC->getOperand(0),
OldC->getOperand(1));
break;
case Instruction::GetElementPtr:
// Make everyone now use a constant of the new type...
std::vector<Constant*> C;
for (unsigned i = 1, e = OldC->getNumOperands(); i != e; ++i)
C.push_back(cast<Constant>(OldC->getOperand(i)));
New = ConstantExpr::getGetElementPtrTy(NewTy, OldC->getOperand(0), C);
break;
} }
};
assert(New != OldC && "Didn't replace constant??"); template<>
OldC->uncheckedReplaceAllUsesWith(New); struct ConvertConstantType<ConstantExpr, Type> {
OldC->destroyConstant(); // This constant is now dead, destroy it. static void convert(ConstantExpr *OldC, const Type *NewTy) {
} Constant *New;
}; switch (OldC->getOpcode()) {
case Instruction::Cast:
New = ConstantExpr::getCast(OldC->getOperand(0), NewTy);
break;
case Instruction::Shl:
case Instruction::Shr:
New = ConstantExpr::getShiftTy(NewTy, OldC->getOpcode(),
OldC->getOperand(0), OldC->getOperand(1));
break;
default:
assert(OldC->getOpcode() >= Instruction::BinaryOpsBegin &&
OldC->getOpcode() < Instruction::BinaryOpsEnd);
New = ConstantExpr::getTy(NewTy, OldC->getOpcode(), OldC->getOperand(0),
OldC->getOperand(1));
break;
case Instruction::GetElementPtr:
// Make everyone now use a constant of the new type...
std::vector<Constant*> C;
for (unsigned i = 1, e = OldC->getNumOperands(); i != e; ++i)
C.push_back(cast<Constant>(OldC->getOperand(i)));
New = ConstantExpr::getGetElementPtrTy(NewTy, OldC->getOperand(0), C);
break;
}
assert(New != OldC && "Didn't replace constant??");
OldC->uncheckedReplaceAllUsesWith(New);
OldC->destroyConstant(); // This constant is now dead, destroy it.
}
};
} // end namespace llvm
static ValueMap<ExprMapKeyType, Type, ConstantExpr> ExprConstants; static ValueMap<ExprMapKeyType, Type, ConstantExpr> ExprConstants;
@ -1039,4 +1046,3 @@ unsigned Constant::mutateReferences(Value *OldV, Value *NewV) {
} }
} }
} // End llvm namespace

View File

@ -19,8 +19,7 @@
#include "llvm/Assembly/Writer.h" #include "llvm/Assembly/Writer.h"
#include "Support/DepthFirstIterator.h" #include "Support/DepthFirstIterator.h"
#include "Support/SetOperations.h" #include "Support/SetOperations.h"
using namespace llvm;
namespace llvm {
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// DominatorSet Implementation // DominatorSet Implementation
@ -120,7 +119,7 @@ void DominatorSet::recalculate() {
for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I) Doms[I]; for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I) Doms[I];
} }
namespace llvm {
static std::ostream &operator<<(std::ostream &o, static std::ostream &operator<<(std::ostream &o,
const std::set<BasicBlock*> &BBs) { const std::set<BasicBlock*> &BBs) {
for (std::set<BasicBlock*>::const_iterator I = BBs.begin(), E = BBs.end(); for (std::set<BasicBlock*>::const_iterator I = BBs.begin(), E = BBs.end();
@ -131,6 +130,7 @@ static std::ostream &operator<<(std::ostream &o,
o << " <<exit node>>"; o << " <<exit node>>";
return o; return o;
} }
}
void DominatorSetBase::print(std::ostream &o) const { void DominatorSetBase::print(std::ostream &o) const {
for (const_iterator I = begin(), E = end(); I != E; ++I) { for (const_iterator I = begin(), E = end(); I != E; ++I) {
@ -361,4 +361,3 @@ void DominanceFrontierBase::print(std::ostream &o) const {
} }
} }
} // End llvm namespace

View File

@ -18,8 +18,7 @@
#include "llvm/Intrinsics.h" #include "llvm/Intrinsics.h"
#include "Support/LeakDetector.h" #include "Support/LeakDetector.h"
#include "SymbolTableListTraitsImpl.h" #include "SymbolTableListTraitsImpl.h"
using namespace llvm;
namespace llvm {
BasicBlock *ilist_traits<BasicBlock>::createNode() { BasicBlock *ilist_traits<BasicBlock>::createNode() {
BasicBlock *Ret = new BasicBlock(); BasicBlock *Ret = new BasicBlock();
@ -259,5 +258,3 @@ void GlobalVariable::setName(const std::string &name, SymbolTable *ST) {
Value::setName(name); Value::setName(name);
if (P && getName() != "") P->getSymbolTable().insert(this); if (P && getName() != "") P->getSymbolTable().insert(this);
} }
} // End llvm namespace

View File

@ -21,8 +21,7 @@
#include <algorithm> #include <algorithm>
#include <cstdarg> #include <cstdarg>
#include <map> #include <map>
using namespace llvm;
namespace llvm {
Function *ilist_traits<Function>::createNode() { Function *ilist_traits<Function>::createNode() {
FunctionType *FTy = FunctionType *FTy =
@ -55,11 +54,13 @@ template class SymbolTableListTraits<Function, Module, Module>;
// Define the GlobalValueRefMap as a struct that wraps a map so that we don't // Define the GlobalValueRefMap as a struct that wraps a map so that we don't
// have Module.h depend on <map> // have Module.h depend on <map>
// //
struct GlobalValueRefMap { namespace llvm {
typedef std::map<GlobalValue*, ConstantPointerRef*> MapTy; struct GlobalValueRefMap {
typedef MapTy::iterator iterator; typedef std::map<GlobalValue*, ConstantPointerRef*> MapTy;
std::map<GlobalValue*, ConstantPointerRef*> Map; typedef MapTy::iterator iterator;
}; std::map<GlobalValue*, ConstantPointerRef*> Map;
};
}
Module::Module(const std::string &MID) Module::Module(const std::string &MID)
@ -310,4 +311,3 @@ void Module::mutateConstantPointerRef(GlobalValue *OldGV, GlobalValue *NewGV) {
} }
} }
} // End llvm namespace

View File

@ -13,8 +13,7 @@
#include "llvm/ModuleProvider.h" #include "llvm/ModuleProvider.h"
#include "llvm/Module.h" #include "llvm/Module.h"
using namespace llvm;
namespace llvm {
/// ctor - always have a valid Module /// ctor - always have a valid Module
/// ///
@ -37,5 +36,3 @@ Module* ModuleProvider::materializeModule() {
return TheModule; return TheModule;
} }
} // End llvm namespace

View File

@ -20,8 +20,7 @@
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include "Support/TypeInfo.h" #include "Support/TypeInfo.h"
#include <set> #include <set>
using namespace llvm;
namespace llvm {
// IncludeFile - Stub function used to help linking out. // IncludeFile - Stub function used to help linking out.
IncludeFile::IncludeFile(void*) {} IncludeFile::IncludeFile(void*) {}
@ -469,5 +468,3 @@ void PassRegistrationListener::enumeratePasses() {
E = PassInfoMap->end(); I != E; ++I) E = PassInfoMap->end(); I != E; ++I)
passEnumerate(I->second); passEnumerate(I->second);
} }
} // End llvm namespace

View File

@ -26,8 +26,7 @@
#include "Support/PostOrderIterator.h" #include "Support/PostOrderIterator.h"
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
#if 0 #if 0
#define SC_DEBUG(X) std::cerr << X #define SC_DEBUG(X) std::cerr << X
@ -363,5 +362,3 @@ int SlotCalculator::doInsertValue(const Value *D) {
SC_DEBUG("]\n"); SC_DEBUG("]\n");
return (int)DestSlot; return (int)DestSlot;
} }
} // End llvm namespace

View File

@ -16,8 +16,7 @@
#include "llvm/Module.h" #include "llvm/Module.h"
#include "Support/StringExtras.h" #include "Support/StringExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
#define DEBUG_SYMBOL_TABLE 0 #define DEBUG_SYMBOL_TABLE 0
#define DEBUG_ABSTYPE 0 #define DEBUG_ABSTYPE 0
@ -363,5 +362,3 @@ void SymbolTable::dump() const {
std::cout << "Symbol table dump:\n"; std::cout << "Symbol table dump:\n";
for_each(begin(), end(), DumpPlane); for_each(begin(), end(), DumpPlane);
} }
} // End llvm namespace

View File

@ -17,8 +17,7 @@
#include "llvm/Constant.h" #include "llvm/Constant.h"
#include "Support/LeakDetector.h" #include "Support/LeakDetector.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// Value Class // Value Class
@ -109,5 +108,3 @@ void User::replaceUsesOfWith(Value *From, Value *To) {
setOperand(i, To); // Fix it now... setOperand(i, To); // Fix it now...
} }
} }
} // End llvm namespace

View File

@ -57,8 +57,7 @@
#include "llvm/Support/InstVisitor.h" #include "llvm/Support/InstVisitor.h"
#include "Support/STLExtras.h" #include "Support/STLExtras.h"
#include <algorithm> #include <algorithm>
using namespace llvm;
namespace llvm {
namespace { // Anonymous namespace for class namespace { // Anonymous namespace for class
@ -158,9 +157,11 @@ namespace { // Anonymous namespace for class
void WriteValue(const Value *V) { void WriteValue(const Value *V) {
if (!V) return; if (!V) return;
if (isa<Instruction>(V)) if (isa<Instruction>(V)) {
std::cerr << *V; std::cerr << *V;
else { } else if (const Type *Ty = dyn_cast<Type>(V)) {
WriteTypeSymbolic(std::cerr, Ty, Mod);
} else {
WriteAsOperand (std::cerr, V, true, true, Mod); WriteAsOperand (std::cerr, V, true, true, Mod);
std::cerr << "\n"; std::cerr << "\n";
} }
@ -184,6 +185,8 @@ namespace { // Anonymous namespace for class
}; };
RegisterOpt<Verifier> X("verify", "Module Verifier"); RegisterOpt<Verifier> X("verify", "Module Verifier");
} // End anonymous namespace
// Assert - We know that cond should be true, if not print an error message. // Assert - We know that cond should be true, if not print an error message.
#define Assert(C, M) \ #define Assert(C, M) \
@ -569,19 +572,18 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
"Illegal # arguments for intrinsic function!", IF); "Illegal # arguments for intrinsic function!", IF);
} }
} // End anonymous namespace
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// Implement the public interfaces to this file... // Implement the public interfaces to this file...
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
FunctionPass *createVerifierPass() { FunctionPass *llvm::createVerifierPass() {
return new Verifier(); return new Verifier();
} }
// verifyFunction - Create // verifyFunction - Create
bool verifyFunction(const Function &f) { bool llvm::verifyFunction(const Function &f) {
Function &F = (Function&)f; Function &F = (Function&)f;
assert(!F.isExternal() && "Cannot verify external functions"); assert(!F.isExternal() && "Cannot verify external functions");
@ -600,12 +602,10 @@ bool verifyFunction(const Function &f) {
// verifyModule - Check a module for errors, printing messages on stderr. // verifyModule - Check a module for errors, printing messages on stderr.
// Return true if the module is corrupt. // Return true if the module is corrupt.
// //
bool verifyModule(const Module &M) { bool llvm::verifyModule(const Module &M) {
PassManager PM; PassManager PM;
Verifier *V = new Verifier(); Verifier *V = new Verifier();
PM.add(V); PM.add(V);
PM.run((Module&)M); PM.run((Module&)M);
return V->Broken; return V->Broken;
} }
} // End llvm namespace

View File

@ -14,7 +14,6 @@
#include "llvm/iMemory.h" #include "llvm/iMemory.h"
#include "llvm/Constants.h" #include "llvm/Constants.h"
#include "llvm/DerivedTypes.h" #include "llvm/DerivedTypes.h"
using namespace llvm; using namespace llvm;
AllocationInst::AllocationInst(const Type *Ty, Value *ArraySize, unsigned iTy, AllocationInst::AllocationInst(const Type *Ty, Value *ArraySize, unsigned iTy,