comparison gen/structs.cpp @ 132:1700239cab2e trunk

[svn r136] MAJOR UNSTABLE UPDATE!!! Initial commit after moving to Tango instead of Phobos. Lots of bugfixes... This build is not suitable for most things.
author lindquist
date Fri, 11 Jan 2008 17:57:40 +0100
parents 9c79b61fb638
children 44a95ac7368a
comparison
equal deleted inserted replaced
131:5825d48b27d1 132:1700239cab2e
169 void DtoResolveStruct(StructDeclaration* sd) 169 void DtoResolveStruct(StructDeclaration* sd)
170 { 170 {
171 if (sd->llvmResolved) return; 171 if (sd->llvmResolved) return;
172 sd->llvmResolved = true; 172 sd->llvmResolved = true;
173 173
174 Logger::println("DtoResolveStruct(%s)", sd->toChars()); 174 Logger::println("DtoResolveStruct(%s): %s", sd->toChars(), sd->loc.toChars());
175 LOG_SCOPE; 175 LOG_SCOPE;
176 176
177 TypeStruct* ts = (TypeStruct*)DtoDType(sd->type); 177 TypeStruct* ts = (TypeStruct*)DtoDType(sd->type);
178 178
179 IRStruct* irstruct = new IRStruct(ts); 179 IRStruct* irstruct = new IRStruct(ts);
180 sd->llvmIRStruct = irstruct; 180 sd->llvmIRStruct = irstruct;
181 gIR->structs.push_back(irstruct); 181 gIR->structs.push_back(irstruct);
182 182
183 for (int k=0; k < sd->members->dim; k++) { 183 Array* arr = &sd->fields;
184 for (int k=0; k < arr->dim; k++) {
185 VarDeclaration* v = (VarDeclaration*)(arr->data[k]);
186 v->toObjFile();
187 }
188
189 /*for (int k=0; k < sd->members->dim; k++) {
184 Dsymbol* dsym = (Dsymbol*)(sd->members->data[k]); 190 Dsymbol* dsym = (Dsymbol*)(sd->members->data[k]);
185 dsym->toObjFile(); 191 dsym->toObjFile();
186 } 192 }*/
187 193
188 Logger::println("doing struct fields"); 194 Logger::println("doing struct fields");
189 195
190 const llvm::StructType* structtype = 0; 196 const llvm::StructType* structtype = 0;
191 std::vector<const llvm::Type*> fieldtypes; 197 std::vector<const llvm::Type*> fieldtypes;
291 void DtoDeclareStruct(StructDeclaration* sd) 297 void DtoDeclareStruct(StructDeclaration* sd)
292 { 298 {
293 if (sd->llvmDeclared) return; 299 if (sd->llvmDeclared) return;
294 sd->llvmDeclared = true; 300 sd->llvmDeclared = true;
295 301
296 Logger::println("DtoDeclareStruct(%s)", sd->toChars()); 302 Logger::println("DtoDeclareStruct(%s): %s", sd->toChars(), sd->loc.toChars());
297 LOG_SCOPE; 303 LOG_SCOPE;
298 304
299 TypeStruct* ts = (TypeStruct*)DtoDType(sd->type); 305 TypeStruct* ts = (TypeStruct*)DtoDType(sd->type);
300 306
301 std::string initname("_D"); 307 std::string initname("_D");
316 void DtoConstInitStruct(StructDeclaration* sd) 322 void DtoConstInitStruct(StructDeclaration* sd)
317 { 323 {
318 if (sd->llvmInitialized) return; 324 if (sd->llvmInitialized) return;
319 sd->llvmInitialized = true; 325 sd->llvmInitialized = true;
320 326
321 Logger::println("DtoConstInitStruct(%s)", sd->toChars()); 327 Logger::println("DtoConstInitStruct(%s): %s", sd->toChars(), sd->loc.toChars());
322 LOG_SCOPE; 328 LOG_SCOPE;
323 329
324 IRStruct* irstruct = sd->llvmIRStruct; 330 IRStruct* irstruct = sd->llvmIRStruct;
325 gIR->structs.push_back(irstruct); 331 gIR->structs.push_back(irstruct);
326 332
388 void DtoDefineStruct(StructDeclaration* sd) 394 void DtoDefineStruct(StructDeclaration* sd)
389 { 395 {
390 if (sd->llvmDefined) return; 396 if (sd->llvmDefined) return;
391 sd->llvmDefined = true; 397 sd->llvmDefined = true;
392 398
393 Logger::println("DtoDefineStruct(%s)", sd->toChars()); 399 Logger::println("DtoDefineStruct(%s): %s", sd->toChars(), sd->loc.toChars());
394 LOG_SCOPE; 400 LOG_SCOPE;
395 401
396 assert(sd->type->ty == Tstruct); 402 assert(sd->type->ty == Tstruct);
397 TypeStruct* ts = (TypeStruct*)sd->type; 403 TypeStruct* ts = (TypeStruct*)sd->type;
398 sd->llvmInit->setInitializer(sd->llvmConstInit); 404 sd->llvmInit->setInitializer(sd->llvmConstInit);