Get this looking more like a function pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13433 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-05-09 04:30:20 +00:00
parent 0979ca7e3e
commit c2421439b5
2 changed files with 66 additions and 64 deletions

View File

@ -59,14 +59,14 @@ namespace {
bool doInitialization(Module &M); bool doInitialization(Module &M);
bool run(Module &M) { bool run(Module &M) {
// First pass, lower all unhandled intrinsics.
lowerIntrinsics(M);
doInitialization(M); doInitialization(M);
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
if (!I->isExternal()) if (!I->isExternal()) {
// First pass, lower all unhandled intrinsics.
lowerIntrinsics(*I);
printFunction(*I); printFunction(*I);
}
// Free memory... // Free memory...
delete Mang; delete Mang;
@ -82,7 +82,7 @@ namespace {
void writeOperandInternal(Value *Operand); void writeOperandInternal(Value *Operand);
private : private :
void lowerIntrinsics(Module &M); void lowerIntrinsics(Function &F);
bool nameAllUsedStructureTypes(Module &M); bool nameAllUsedStructureTypes(Module &M);
void printModule(Module *M); void printModule(Module *M);
@ -656,6 +656,8 @@ bool CWriter::doInitialization(Module &M) {
TheModule = &M; TheModule = &M;
FUT = &getAnalysis<FindUsedTypes>(); FUT = &getAnalysis<FindUsedTypes>();
IL.AddPrototypes(M);
// Ensure that all structure types have names... // Ensure that all structure types have names...
bool Changed = nameAllUsedStructureTypes(M); bool Changed = nameAllUsedStructureTypes(M);
Mang = new Mangler(M); Mang = new Mangler(M);
@ -776,7 +778,7 @@ bool CWriter::doInitialization(Module &M) {
void CWriter::printFloatingPointConstants(Module &M) { void CWriter::printFloatingPointConstants(Module &M) {
union { union {
double D; double D;
unsigned long long U; uint64_t U;
} DBLUnion; } DBLUnion;
union { union {
@ -1219,9 +1221,8 @@ void CWriter::visitSelectInst(SelectInst &I) {
} }
void CWriter::lowerIntrinsics(Module &M) { void CWriter::lowerIntrinsics(Function &F) {
for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ) for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
if (CallInst *CI = dyn_cast<CallInst>(I++)) if (CallInst *CI = dyn_cast<CallInst>(I++))
if (Function *F = CI->getCalledFunction()) if (Function *F = CI->getCalledFunction())

View File

@ -59,14 +59,14 @@ namespace {
bool doInitialization(Module &M); bool doInitialization(Module &M);
bool run(Module &M) { bool run(Module &M) {
// First pass, lower all unhandled intrinsics.
lowerIntrinsics(M);
doInitialization(M); doInitialization(M);
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
if (!I->isExternal()) if (!I->isExternal()) {
// First pass, lower all unhandled intrinsics.
lowerIntrinsics(*I);
printFunction(*I); printFunction(*I);
}
// Free memory... // Free memory...
delete Mang; delete Mang;
@ -82,7 +82,7 @@ namespace {
void writeOperandInternal(Value *Operand); void writeOperandInternal(Value *Operand);
private : private :
void lowerIntrinsics(Module &M); void lowerIntrinsics(Function &F);
bool nameAllUsedStructureTypes(Module &M); bool nameAllUsedStructureTypes(Module &M);
void printModule(Module *M); void printModule(Module *M);
@ -656,6 +656,8 @@ bool CWriter::doInitialization(Module &M) {
TheModule = &M; TheModule = &M;
FUT = &getAnalysis<FindUsedTypes>(); FUT = &getAnalysis<FindUsedTypes>();
IL.AddPrototypes(M);
// Ensure that all structure types have names... // Ensure that all structure types have names...
bool Changed = nameAllUsedStructureTypes(M); bool Changed = nameAllUsedStructureTypes(M);
Mang = new Mangler(M); Mang = new Mangler(M);
@ -776,7 +778,7 @@ bool CWriter::doInitialization(Module &M) {
void CWriter::printFloatingPointConstants(Module &M) { void CWriter::printFloatingPointConstants(Module &M) {
union { union {
double D; double D;
unsigned long long U; uint64_t U;
} DBLUnion; } DBLUnion;
union { union {
@ -1219,9 +1221,8 @@ void CWriter::visitSelectInst(SelectInst &I) {
} }
void CWriter::lowerIntrinsics(Module &M) { void CWriter::lowerIntrinsics(Function &F) {
for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ) for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
if (CallInst *CI = dyn_cast<CallInst>(I++)) if (CallInst *CI = dyn_cast<CallInst>(I++))
if (Function *F = CI->getCalledFunction()) if (Function *F = CI->getCalledFunction())