Mercurial > projects > ldc
comparison gen/toobj.cpp @ 155:7f92f477ff53 trunk
[svn r171] starting to move IR data from AST nodes into IRState; started with IrFunction
author | ChristianK |
---|---|
date | Tue, 29 Apr 2008 21:33:50 +0200 |
parents | 4c577c2b7229 |
children | ccd07d9f2ce9 |
comparison
equal
deleted
inserted
replaced
154:5cb946f323d2 | 155:7f92f477ff53 |
---|---|
175 if (gIR->ctors.empty()) | 175 if (gIR->ctors.empty()) |
176 return NULL; | 176 return NULL; |
177 | 177 |
178 size_t n = gIR->ctors.size(); | 178 size_t n = gIR->ctors.size(); |
179 if (n == 1) | 179 if (n == 1) |
180 return gIR->ctors[0]->irFunc->func; | 180 return gIR->irFunc[gIR->ctors[0]]->func; |
181 | 181 |
182 std::string name("_D"); | 182 std::string name("_D"); |
183 name.append(gIR->dmodule->mangle()); | 183 name.append(gIR->dmodule->mangle()); |
184 name.append("6__ctorZ"); | 184 name.append("6__ctorZ"); |
185 | 185 |
190 | 190 |
191 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); | 191 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); |
192 LLVMBuilder builder(bb); | 192 LLVMBuilder builder(bb); |
193 | 193 |
194 for (size_t i=0; i<n; i++) { | 194 for (size_t i=0; i<n; i++) { |
195 llvm::Function* f = gIR->ctors[i]->irFunc->func; | 195 llvm::Function* f = gIR->irFunc[gIR->ctors[i]]->func; |
196 llvm::CallInst* call = builder.CreateCall(f,""); | 196 llvm::CallInst* call = builder.CreateCall(f,""); |
197 call->setCallingConv(llvm::CallingConv::Fast); | 197 call->setCallingConv(llvm::CallingConv::Fast); |
198 } | 198 } |
199 | 199 |
200 builder.CreateRetVoid(); | 200 builder.CreateRetVoid(); |
208 if (gIR->dtors.empty()) | 208 if (gIR->dtors.empty()) |
209 return NULL; | 209 return NULL; |
210 | 210 |
211 size_t n = gIR->dtors.size(); | 211 size_t n = gIR->dtors.size(); |
212 if (n == 1) | 212 if (n == 1) |
213 return gIR->dtors[0]->irFunc->func; | 213 return gIR->irFunc[gIR->dtors[0]]->func; |
214 | 214 |
215 std::string name("_D"); | 215 std::string name("_D"); |
216 name.append(gIR->dmodule->mangle()); | 216 name.append(gIR->dmodule->mangle()); |
217 name.append("6__dtorZ"); | 217 name.append("6__dtorZ"); |
218 | 218 |
223 | 223 |
224 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); | 224 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); |
225 LLVMBuilder builder(bb); | 225 LLVMBuilder builder(bb); |
226 | 226 |
227 for (size_t i=0; i<n; i++) { | 227 for (size_t i=0; i<n; i++) { |
228 llvm::Function* f = gIR->dtors[i]->irFunc->func; | 228 llvm::Function* f = gIR->irFunc[gIR->dtors[i]]->func; |
229 llvm::CallInst* call = builder.CreateCall(f,""); | 229 llvm::CallInst* call = builder.CreateCall(f,""); |
230 call->setCallingConv(llvm::CallingConv::Fast); | 230 call->setCallingConv(llvm::CallingConv::Fast); |
231 } | 231 } |
232 | 232 |
233 builder.CreateRetVoid(); | 233 builder.CreateRetVoid(); |
241 if (gIR->unitTests.empty()) | 241 if (gIR->unitTests.empty()) |
242 return NULL; | 242 return NULL; |
243 | 243 |
244 size_t n = gIR->unitTests.size(); | 244 size_t n = gIR->unitTests.size(); |
245 if (n == 1) | 245 if (n == 1) |
246 return gIR->unitTests[0]->irFunc->func; | 246 return gIR->irFunc[gIR->unitTests[0]]->func; |
247 | 247 |
248 std::string name("_D"); | 248 std::string name("_D"); |
249 name.append(gIR->dmodule->mangle()); | 249 name.append(gIR->dmodule->mangle()); |
250 name.append("10__unittestZ"); | 250 name.append("10__unittestZ"); |
251 | 251 |
256 | 256 |
257 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); | 257 llvm::BasicBlock* bb = new llvm::BasicBlock("entry", fn); |
258 LLVMBuilder builder(bb); | 258 LLVMBuilder builder(bb); |
259 | 259 |
260 for (size_t i=0; i<n; i++) { | 260 for (size_t i=0; i<n; i++) { |
261 llvm::Function* f = gIR->unitTests[i]->irFunc->func; | 261 llvm::Function* f = gIR->irFunc[gIR->unitTests[i]]->func; |
262 llvm::CallInst* call = builder.CreateCall(f,""); | 262 llvm::CallInst* call = builder.CreateCall(f,""); |
263 call->setCallingConv(llvm::CallingConv::Fast); | 263 call->setCallingConv(llvm::CallingConv::Fast); |
264 } | 264 } |
265 | 265 |
266 builder.CreateRetVoid(); | 266 builder.CreateRetVoid(); |