[llvm-commits] CVS: llvm/lib/Target/CBackend/Writer.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sat May 8 23:30:02 PDT 2004
Changes in directory llvm/lib/Target/CBackend:
Writer.cpp updated: 1.170 -> 1.171
---
Log message:
Get this looking more like a function pass.
---
Diffs of the changes: (+33 -32)
Index: llvm/lib/Target/CBackend/Writer.cpp
diff -u llvm/lib/Target/CBackend/Writer.cpp:1.170 llvm/lib/Target/CBackend/Writer.cpp:1.171
--- llvm/lib/Target/CBackend/Writer.cpp:1.170 Sat May 8 22:42:48 2004
+++ llvm/lib/Target/CBackend/Writer.cpp Sat May 8 23:30:20 2004
@@ -59,14 +59,14 @@
bool doInitialization(Module &M);
bool run(Module &M) {
- // First pass, lower all unhandled intrinsics.
- lowerIntrinsics(M);
-
doInitialization(M);
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);
+ }
// Free memory...
delete Mang;
@@ -82,7 +82,7 @@
void writeOperandInternal(Value *Operand);
private :
- void lowerIntrinsics(Module &M);
+ void lowerIntrinsics(Function &F);
bool nameAllUsedStructureTypes(Module &M);
void printModule(Module *M);
@@ -655,6 +655,8 @@
// Initialize
TheModule = &M;
FUT = &getAnalysis<FindUsedTypes>();
+
+ IL.AddPrototypes(M);
// Ensure that all structure types have names...
bool Changed = nameAllUsedStructureTypes(M);
@@ -776,7 +778,7 @@
void CWriter::printFloatingPointConstants(Module &M) {
union {
double D;
- unsigned long long U;
+ uint64_t U;
} DBLUnion;
union {
@@ -1219,33 +1221,32 @@
}
-void CWriter::lowerIntrinsics(Module &M) {
- 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 (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
- if (CallInst *CI = dyn_cast<CallInst>(I++))
- if (Function *F = CI->getCalledFunction())
- switch (F->getIntrinsicID()) {
- case Intrinsic::not_intrinsic:
- case Intrinsic::vastart:
- case Intrinsic::vacopy:
- case Intrinsic::vaend:
- case Intrinsic::returnaddress:
- case Intrinsic::frameaddress:
- case Intrinsic::setjmp:
- case Intrinsic::longjmp:
- // We directly implement these intrinsics
- break;
- default:
- // All other intrinsic calls we must lower.
- Instruction *Before = CI->getPrev();
- IL.LowerIntrinsicCall(CI);
- if (Before) { // Move iterator to instruction after call
- I = Before; ++I;
- } else {
- I = BB->begin();
- }
+void CWriter::lowerIntrinsics(Function &F) {
+ for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
+ for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
+ if (CallInst *CI = dyn_cast<CallInst>(I++))
+ if (Function *F = CI->getCalledFunction())
+ switch (F->getIntrinsicID()) {
+ case Intrinsic::not_intrinsic:
+ case Intrinsic::vastart:
+ case Intrinsic::vacopy:
+ case Intrinsic::vaend:
+ case Intrinsic::returnaddress:
+ case Intrinsic::frameaddress:
+ case Intrinsic::setjmp:
+ case Intrinsic::longjmp:
+ // We directly implement these intrinsics
+ break;
+ default:
+ // All other intrinsic calls we must lower.
+ Instruction *Before = CI->getPrev();
+ IL.LowerIntrinsicCall(CI);
+ if (Before) { // Move iterator to instruction after call
+ I = Before; ++I;
+ } else {
+ I = BB->begin();
}
+ }
}
More information about the llvm-commits
mailing list