# HG changeset patch # User korDen@korDen-pc # Date 1332630672 -14400 # Node ID 52188e7e3fb59c6c005a523286cd60afae079b75 # Parent 80660782bffe40dd0fdcf04bbe2e3ef8f96af384 Fixed deprecated features, now compiles with DMD2.058 Also changed Array allocation policy: Now doesn't reallocate but malloc's, followed by a memcpy (no free). (this fixes a crash while compiling druntime. Same bug in dmd) diff -r 80660782bffe -r 52188e7e3fb5 dbg/CallStackInfo.d --- a/dbg/CallStackInfo.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dbg/CallStackInfo.d Sun Mar 25 03:11:12 2012 +0400 @@ -210,7 +210,7 @@ } enum EXCEPTION_EXECUTE_HANDLER = 1; -extern(Windows) int UnhandledExceptionHandler(EXCEPTION_POINTERS* e) { +/*extern(Windows) */int UnhandledExceptionHandler(EXCEPTION_POINTERS* e) { scope CallStackInfo info = new CallStackInfo(e); info.dump(); diff -r 80660782bffe -r 52188e7e3fb5 dmd/AndAndExp.d --- a/dmd/AndAndExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/AndAndExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -73,7 +73,7 @@ return this; } - override int isBit() + override bool isBit() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/Array.d --- a/dmd/Array.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Array.d Sun Mar 25 03:11:12 2012 +0400 @@ -67,7 +67,13 @@ //printf("Array::reserve: size = %d, offset = %d, nbytes = %d\n", size, offset, nbytes); if (allocdim - dim < nentries) { allocdim = dim + nentries; - data = cast(void**)GC.realloc(data, allocdim * (*data).sizeof); + + auto newData = cast(void**)GC.malloc(allocdim * (*data).sizeof); + memcpy(newData, data, dim * (*data).sizeof); +// GC.free(data); + data = newData; + + //data = cast(void**)GC.realloc(data, allocdim * (*data).sizeof); } } diff -r 80660782bffe -r 52188e7e3fb5 dmd/ArrayExp.d --- a/dmd/ArrayExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/ArrayExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -83,7 +83,7 @@ return e; } - override int isLvalue() + override bool isLvalue() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/ArrayInitializer.d --- a/dmd/ArrayInitializer.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/ArrayInitializer.d Sun Mar 25 03:11:12 2012 +0400 @@ -328,7 +328,7 @@ scope dts = new Vector!(dt_t*)(); uint size; - uint length; + uint length_; uint i; dt_t* dt; dt_t* d; @@ -340,7 +340,7 @@ size = cast(uint)tn.size(); - length = 0; + length_ = 0; for (i = 0; i < index.dim; i++) { Expression idx; @@ -348,16 +348,16 @@ idx = index[i]; if (idx) - length = cast(uint)idx.toInteger(); - //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); + length_ = cast(uint)idx.toInteger(); + //printf("\tindex[%d] = %p, length_ = %u, dim = %u\n", i, idx, length_, dim); - assert(length < dim); + assert(length_ < dim); val = value[i]; dt = val.toDt(); - if (dts[length]) - error(loc, "duplicate initializations for index %d", length); - dts[length] = dt; - length++; + if (dts[length_]) + error(loc, "duplicate initializations for index %d", length_); + dts[length_] = dt; + length_++; } Expression edefault = tb.nextOf().defaultInit(Loc(0)); diff -r 80660782bffe -r 52188e7e3fb5 dmd/BoolExp.d --- a/dmd/BoolExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/BoolExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -57,7 +57,7 @@ assert(false); } - override int isBit() + override bool isBit() { return true; } diff -r 80660782bffe -r 52188e7e3fb5 dmd/CallExp.d --- a/dmd/CallExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/CallExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -1165,14 +1165,14 @@ } version (DMDV2) { - override int isLvalue() + override bool isLvalue() { // if (type.toBasetype().ty == Tstruct) // return 1; Type tb = e1.type.toBasetype(); if (tb.ty == Tfunction && (cast(TypeFunction)tb).isref) - return 1; // function returns a reference - return 0; + return true; // function returns a reference + return false; } } override Expression toLvalue(Scope sc, Expression e) diff -r 80660782bffe -r 52188e7e3fb5 dmd/Cast.d --- a/dmd/Cast.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Cast.d Sun Mar 25 03:11:12 2012 +0400 @@ -89,6 +89,7 @@ case TY.Tuns32: result = cast(uint)r; break; case TY.Tint64: result = cast(long)r; break; case TY.Tuns64: result = cast(ulong)r; break; + default: assert(false); } e = new IntegerExp(loc, result, type); diff -r 80660782bffe -r 52188e7e3fb5 dmd/CmpExp.d --- a/dmd/CmpExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/CmpExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -150,7 +150,7 @@ return interpretCommon2(istate, &Cmp); } - override int isBit() + override bool isBit() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/CommaExp.d --- a/dmd/CommaExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/CommaExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -59,7 +59,7 @@ } version (DMDV2) { - override int isLvalue() + override bool isLvalue() { return e2.isLvalue(); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/CondExp.d --- a/dmd/CondExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/CondExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -195,7 +195,7 @@ e2.checkEscapeRef(); } - override int isLvalue() + override bool isLvalue() { return e1.isLvalue() && e2.isLvalue(); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/DsymbolExp.d --- a/dmd/DsymbolExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/DsymbolExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -260,7 +260,7 @@ assert(false); } - override int isLvalue() + override bool isLvalue() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/Expression.d --- a/dmd/Expression.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Expression.d Sun Mar 25 03:11:12 2012 +0400 @@ -381,11 +381,11 @@ } /*************************************** - * Return !=0 if expression is an lvalue. + * Return true if expression is an lvalue. */ - int isLvalue() + bool isLvalue() { - return 0; + return false; } /******************************* @@ -912,7 +912,7 @@ /******************************** * Does this expression result in either a 1 or a 0? */ - int isBit() + bool isBit() { return false; } diff -r 80660782bffe -r 52188e7e3fb5 dmd/ForeachStatement.d --- a/dmd/ForeachStatement.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/ForeachStatement.d Sun Mar 25 03:11:12 2012 +0400 @@ -671,12 +671,14 @@ case TY.Tchar: flag = 0; break; case TY.Twchar: flag = 3; break; case TY.Tdchar: flag = 6; break; + default: assert(false); } switch (tnv.ty) { case TY.Tchar: flag += 0; break; case TY.Twchar: flag += 1; break; case TY.Tdchar: flag += 2; break; + default: assert(false); } string r = (op == TOK.TOKforeach_reverse) ? "R" : ""; int j = sprintf(fdname.ptr, "_aApply%.*s%.*s%zd".ptr, r, 2, fntab[flag].ptr, dim); diff -r 80660782bffe -r 52188e7e3fb5 dmd/IdentifierExp.d --- a/dmd/IdentifierExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/IdentifierExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -171,9 +171,9 @@ buf.writestring(ident.toChars()); } - override int isLvalue() + override bool isLvalue() { - return 1; + return true; } override Expression toLvalue(Scope sc, Expression e) diff -r 80660782bffe -r 52188e7e3fb5 dmd/IdentityExp.d --- a/dmd/IdentityExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/IdentityExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -51,7 +51,7 @@ return this; } - override int isBit() + override bool isBit() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/Import.d --- a/dmd/Import.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Import.d Sun Mar 25 03:11:12 2012 +0400 @@ -36,7 +36,7 @@ case '\\': buf.writebyte('\\'); default: - buf.writebyte(*fname); + buf.writebyte(c); break; } } diff -r 80660782bffe -r 52188e7e3fb5 dmd/InExp.d --- a/dmd/InExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/InExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -69,9 +69,9 @@ return this; } - override int isBit() + override bool isBit() { - return 0; + return false; } override Identifier opId() diff -r 80660782bffe -r 52188e7e3fb5 dmd/IndexExp.d --- a/dmd/IndexExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/IndexExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -194,7 +194,7 @@ return e; } - override int isLvalue() + override bool isLvalue() { return true; } diff -r 80660782bffe -r 52188e7e3fb5 dmd/NotExp.d --- a/dmd/NotExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/NotExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -55,7 +55,7 @@ assert(false); } - override int isBit() + override bool isBit() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/OrOrExp.d --- a/dmd/OrOrExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/OrOrExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -75,7 +75,7 @@ return this; } - override int isBit() + override bool isBit() { assert(false); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/OverExp.d --- a/dmd/OverExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/OverExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -27,7 +27,7 @@ type = Type.tvoid; } - override int isLvalue() + override bool isLvalue() { return true; } diff -r 80660782bffe -r 52188e7e3fb5 dmd/Parameter.d --- a/dmd/Parameter.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Parameter.d Sun Mar 25 03:11:12 2012 +0400 @@ -97,6 +97,8 @@ case STC.STClazy: buf.writeByte('L'); break; + default: + assert(false); } static if (false) { int mod = 0x100; diff -r 80660782bffe -r 52188e7e3fb5 dmd/Parser.d --- a/dmd/Parser.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Parser.d Sun Mar 25 03:11:12 2012 +0400 @@ -1835,7 +1835,7 @@ NewDeclaration parseNew() { NewDeclaration f; - scope arguments = new Parameters(); + auto arguments = new Parameters(); int varargs; Loc loc = this.loc; @@ -1854,7 +1854,7 @@ DeleteDeclaration parseDelete() { DeleteDeclaration f; - scope Parameters arguments; + Parameters arguments; int varargs; Loc loc = this.loc; diff -r 80660782bffe -r 52188e7e3fb5 dmd/PtrExp.d --- a/dmd/PtrExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/PtrExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -88,9 +88,9 @@ return this; } - override int isLvalue() + override bool isLvalue() { - return 1; + return true; } override void checkEscapeRef() diff -r 80660782bffe -r 52188e7e3fb5 dmd/SliceExp.d --- a/dmd/SliceExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/SliceExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -278,9 +278,9 @@ } version (DMDV2) { - override int isLvalue() + override bool isLvalue() { - return 1; + return true; } } override Expression toLvalue(Scope sc, Expression e) diff -r 80660782bffe -r 52188e7e3fb5 dmd/StructLiteralExp.d --- a/dmd/StructLiteralExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/StructLiteralExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -625,9 +625,9 @@ version(DMDV2) { - override int isLvalue() + override bool isLvalue() { - return 1; + return true; } } diff -r 80660782bffe -r 52188e7e3fb5 dmd/ThisExp.d --- a/dmd/ThisExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/ThisExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -124,9 +124,9 @@ } version (DMDV2) { - override int isLvalue() + override bool isLvalue() { - return 1; + return true; } } override Expression toLvalue(Scope sc, Expression e) diff -r 80660782bffe -r 52188e7e3fb5 dmd/Type.d --- a/dmd/Type.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/Type.d Sun Mar 25 03:11:12 2012 +0400 @@ -1462,6 +1462,9 @@ L7: t.swto = this; break; + + default: + assert(false); } check(); @@ -1538,6 +1541,9 @@ if (wto) assert(wto.mod == MOD.MODwild); if (swto) assert(swto.mod == MOD.MODundefined); break; + + default: + assert(false); } Type tn = nextOf(); @@ -1572,6 +1578,9 @@ case MOD.MODshared | MOD.MODwild: assert(tn.mod == MOD.MODimmutable || tn.mod == (MOD.MODshared | MOD.MODconst) || tn.mod == (MOD.MODshared | MOD.MODwild)); break; + + default: + assert(false); } tn.check(); } @@ -1675,6 +1684,9 @@ case MOD.MODshared | MOD.MODwild: t = sharedWildOf(); break; + + default: + assert(false); } } return t; diff -r 80660782bffe -r 52188e7e3fb5 dmd/VarExp.d --- a/dmd/VarExp.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/VarExp.d Sun Mar 25 03:11:12 2012 +0400 @@ -234,11 +234,11 @@ version (DMDV2) { - override int isLvalue() + override bool isLvalue() { if (var.storage_class & STClazy) - return 0; - return 1; + return false; + return true; } } override Expression toLvalue(Scope sc, Expression e) diff -r 80660782bffe -r 52188e7e3fb5 dmd/backend/iasm.d --- a/dmd/backend/iasm.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/backend/iasm.d Sun Mar 25 03:11:12 2012 +0400 @@ -797,6 +797,9 @@ goto L386_WARNING2; } break; + + default: + assert(false); } } @@ -923,6 +926,9 @@ } } break; + + default: + assert(false); } uint usOpcode = ptb.pptb0.usOpcode; @@ -1122,6 +1128,9 @@ pc.IFL2 = FL.FLconst; } break; + + default: + assert(false); } } @@ -1324,7 +1333,10 @@ aoptyTmp = aoptyTable3; uSizemaskTmp = cast(ushort)uSizemaskTable3; } - goto L1; + goto L1; + + default: + assert(false); } L2: @@ -1547,6 +1559,9 @@ //printf("usActual = %d\n", usActual); switch (usActual) { + default: + assert(false); + case 0: ptbRet = pop.ptb ; goto RETURN_IT; @@ -2204,6 +2219,8 @@ default: if (ASM_GET_uSizemask(popnd1.usFlags) == _8) { switch(popnd1.base.val) { + default: + assert(false); case _AL: case _AH: usRet |= mAX; @@ -3070,6 +3087,8 @@ switch (amodTable) { + default: + assert(false); case _normal: // Normal's match with normals switch(amodOp) { case _normal: @@ -3712,6 +3731,8 @@ { switch (tok_save) { + default: + assert(false); case TOKgt: o1.disp = o1.disp > o2.disp; break; diff -r 80660782bffe -r 52188e7e3fb5 dmd/expression/Add.d --- a/dmd/expression/Add.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/expression/Add.d Sun Mar 25 03:11:12 2012 +0400 @@ -85,6 +85,7 @@ case 6+0: v = Complex!(real)(c1.re + r2, c1.im); break; case 6+1: v = Complex!(real)(c1.re, c1.im + i2); break; case 6+2: v = Complex!(real)(c1.re + c2.re, c1.im + c2.im); break; + default: assert(false); } e = new ComplexExp(loc, v, type); } diff -r 80660782bffe -r 52188e7e3fb5 dmd/expression/Util.d --- a/dmd/expression/Util.d Sun Mar 25 01:39:46 2012 +0400 +++ b/dmd/expression/Util.d Sun Mar 25 03:11:12 2012 +0400 @@ -1285,6 +1285,9 @@ if (arg0.op == TOKfloat64) e = new RealExp(Loc(0), fabsl(arg0.toReal()), arg0.type); break; + + default: + assert(false); } return e; } diff -r 80660782bffe -r 52188e7e3fb5 main.d --- a/main.d Sun Mar 25 01:39:46 2012 +0400 +++ b/main.d Sun Mar 25 03:11:12 2012 +0400 @@ -20,7 +20,7 @@ import dmd.String; import dmd.backend.glue; -import std.stdarg; +import core.vararg; import std.string : toStringz; import std.exception; @@ -43,7 +43,7 @@ EXIT_SUCCESS = 0, } -version = CrashHandler; +//version = CrashHandler; version (CrashHandler) { version(Linux) @@ -926,7 +926,7 @@ else { name = p; - if (!*name) + if (!*name.ptr) goto Linvalid; }