Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.

Reimplemented support for nested functions/class using a new approach.
Added error on taking address of intrinsic.
Fixed problems with the ->syntaxCopy of TypeFunction delegate exp.
Removed DtoDType and replaced all uses with ->toBasetype() instead.
Removed unused inplace stuff.
Fixed a bunch of issues in the runtime unittests, not complete yet.
Added mini tests.
This commit is contained in:
Tomas Lindquist Olsen 2008-08-10 08:37:38 +02:00
parent b2d860374b
commit 9d7f16b967
39 changed files with 693 additions and 455 deletions

View file

@ -67,7 +67,7 @@ LLValue* DtoIndexStruct(LLValue* ptr, StructDeclaration* sd, Type* t, unsigned o
for (unsigned i=0; i<sd->fields.dim; ++i) {
VarDeclaration* vd = (VarDeclaration*)sd->fields.data[i];
Type* vdtype = DtoDType(vd->type);
Type* vdtype = vd->type->toBasetype();
//Logger::println("found %u type %s", vd->offset, vdtype->toChars());
assert(vd->ir.irField->index >= 0);
if (os == vd->offset && vdtype == t) {
@ -125,7 +125,7 @@ void DtoResolveStruct(StructDeclaration* sd)
if (sd->prot() == PROTprivate && sd->getModule() != gIR->dmodule)
Logger::println("using a private struct from outside its module");
TypeStruct* ts = (TypeStruct*)DtoDType(sd->type);
TypeStruct* ts = (TypeStruct*)sd->type->toBasetype();
bool ispacked = (ts->alignsize() == 1);
@ -279,7 +279,7 @@ void DtoDeclareStruct(StructDeclaration* sd)
Logger::println("DtoDeclareStruct(%s): %s", sd->toChars(), sd->loc.toChars());
LOG_SCOPE;
TypeStruct* ts = (TypeStruct*)DtoDType(sd->type);
TypeStruct* ts = (TypeStruct*)sd->type->toBasetype();
std::string initname("_D");
initname.append(sd->mangle());