Mercurial > projects > ldc
comparison gen/toobj.cpp @ 1478:4dca8ed9d8b7
Fix #318 by making a list of all seen template instances in a module for
singleobj compilation and then making sure they get emitted in their entirety.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 06 Jun 2009 09:47:32 +0200 |
parents | 630fc54f7c1e |
children | 2292878925f4 |
comparison
equal
deleted
inserted
replaced
1477:6023f65a3aee | 1478:4dca8ed9d8b7 |
---|---|
139 dsym->codegen(sir); | 139 dsym->codegen(sir); |
140 } | 140 } |
141 | 141 |
142 // emit function bodies | 142 // emit function bodies |
143 sir->emitFunctionBodies(); | 143 sir->emitFunctionBodies(); |
144 | |
145 // for singleobj-compilation, fully emit all seen template instances | |
146 if (opts::singleObj) | |
147 { | |
148 while (!ir.seenTemplateInstances.empty()) | |
149 { | |
150 IRState::TemplateInstanceSet::iterator it, end = ir.seenTemplateInstances.end(); | |
151 for (it = ir.seenTemplateInstances.begin(); it != end; ++it) | |
152 (*it)->codegen(sir); | |
153 ir.seenTemplateInstances.clear(); | |
154 | |
155 // emit any newly added function bodies | |
156 sir->emitFunctionBodies(); | |
157 } | |
158 } | |
144 | 159 |
145 // generate ModuleInfo | 160 // generate ModuleInfo |
146 genmoduleinfo(); | 161 genmoduleinfo(); |
147 | 162 |
148 // emit usedArray | 163 // emit usedArray |