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