Mercurial > projects > ldc
comparison gen/classes.cpp @ 825:a70ddd449e7d
Commented some logging that could be '''very''' long, cuts -vv output size of a gtkd gl sample down 1.2GB by 3/4.
Fixed wrong pointer type for multidimension "deep" slicing.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Thu, 04 Dec 2008 16:11:09 +0100 |
parents | 8f0b24bc55f0 |
children | 482cd74d1c71 |
comparison
equal
deleted
inserted
replaced
824:b972fec8a5f5 | 825:a70ddd449e7d |
---|---|
253 | 253 |
254 // void*[vtbl.dim] | 254 // void*[vtbl.dim] |
255 llvm::cast<llvm::OpaqueType>(irstruct->vtblTy.get())->refineAbstractTypeTo(LLArrayType::get(getVoidPtrType(), cd->vtbl.dim)); | 255 llvm::cast<llvm::OpaqueType>(irstruct->vtblTy.get())->refineAbstractTypeTo(LLArrayType::get(getVoidPtrType(), cd->vtbl.dim)); |
256 | 256 |
257 // log | 257 // log |
258 if (Logger::enabled()) | 258 // if (Logger::enabled()) |
259 Logger::cout() << "final class type: " << *ts->ir.type->get() << '\n'; | 259 // Logger::cout() << "final class type: " << *ts->ir.type->get() << '\n'; |
260 | 260 |
261 // pop state | 261 // pop state |
262 gIR->structs.pop_back(); | 262 gIR->structs.pop_back(); |
263 | 263 |
264 // queue declare | 264 // queue declare |
580 irstruct->constVtbl = LLConstantStruct::get(sinits); | 580 irstruct->constVtbl = LLConstantStruct::get(sinits); |
581 | 581 |
582 // refine type | 582 // refine type |
583 llvm::cast<llvm::OpaqueType>(irstruct->vtblInitTy.get())->refineAbstractTypeTo(irstruct->constVtbl->getType()); | 583 llvm::cast<llvm::OpaqueType>(irstruct->vtblInitTy.get())->refineAbstractTypeTo(irstruct->constVtbl->getType()); |
584 | 584 |
585 if (Logger::enabled()) | 585 // if (Logger::enabled()) |
586 Logger::cout() << "vtbl initializer: " << *irstruct->constVtbl << std::endl; | 586 // Logger::cout() << "vtbl initializer: " << *irstruct->constVtbl << std::endl; |
587 } | 587 } |
588 | 588 |
589 ////////////////////////////////////////////////////////////////////////////// | 589 ////////////////////////////////////////////////////////////////////////////// |
590 | 590 |
591 static void init_class_interface_vtbl_initializers(ClassDeclaration* cd) | 591 static void init_class_interface_vtbl_initializers(ClassDeclaration* cd) |
758 irstruct->constInit = LLConstantStruct::get(inits); // classes are never packed | 758 irstruct->constInit = LLConstantStruct::get(inits); // classes are never packed |
759 | 759 |
760 // refine __initZ global type to the one of the initializer | 760 // refine __initZ global type to the one of the initializer |
761 llvm::cast<llvm::OpaqueType>(irstruct->initOpaque.get())->refineAbstractTypeTo(irstruct->constInit->getType()); | 761 llvm::cast<llvm::OpaqueType>(irstruct->initOpaque.get())->refineAbstractTypeTo(irstruct->constInit->getType()); |
762 | 762 |
763 if (Logger::enabled()) | 763 // if (Logger::enabled()) |
764 { | 764 // { |
765 Logger::cout() << "class " << cd->toChars() << std::endl; | 765 // Logger::cout() << "class " << cd->toChars() << std::endl; |
766 Logger::cout() << "type " << *cd->type->ir.type->get() << std::endl; | 766 // Logger::cout() << "type " << *cd->type->ir.type->get() << std::endl; |
767 Logger::cout() << "initializer " << *irstruct->constInit << std::endl; | 767 // Logger::cout() << "initializer " << *irstruct->constInit << std::endl; |
768 } | 768 // } |
769 | 769 |
770 gIR->structs.pop_back(); | 770 gIR->structs.pop_back(); |
771 } | 771 } |
772 | 772 |
773 ////////////////////////////////////////////////////////////////////////////////////////// | 773 ////////////////////////////////////////////////////////////////////////////////////////// |