comparison gen/arrays.cpp @ 1463:a5526b7a5ae6

D2: Applied function type from D1 frontend that got removed in D2, it's critical for member function type to be correct. Fixed a bunch of type discrepancies in druntime object.di vs. genobj.d . Disabled (#if 0) some potentally very large type dumps for -vv . Updated classinfo and typeinfo generation for D2, almost complete now. Added finer grained checks for vtbl type mismatching, aids debugging.
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Wed, 03 Jun 2009 02:28:48 +0200
parents a3af393d1936
children b3ba2c6ff038
comparison
equal deleted inserted replaced
1462:f0423003caa6 1463:a5526b7a5ae6
699 Type* t = l->getType(); 699 Type* t = l->getType();
700 LLValue* tival = DtoTypeInfoOf(t); 700 LLValue* tival = DtoTypeInfoOf(t);
701 // DtoTypeInfoOf only does declare, not enough in this case :/ 701 // DtoTypeInfoOf only does declare, not enough in this case :/
702 t->vtinfo->codegen(Type::sir); 702 t->vtinfo->codegen(Type::sir);
703 703
704 #if 0
704 if (Logger::enabled()) 705 if (Logger::enabled())
705 Logger::cout() << "typeinfo decl: " << *tival << '\n'; 706 Logger::cout() << "typeinfo decl: " << *tival << '\n';
707 #endif
706 708
707 args.push_back(DtoBitCast(tival, fn->getFunctionType()->getParamType(2))); 709 args.push_back(DtoBitCast(tival, fn->getFunctionType()->getParamType(2)));
708 } 710 }
709 711
710 LLCallSite call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp"); 712 LLCallSite call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp");