Mercurial > projects > ldc
changeset 770:50eae902f77e
Cast result of ...AssignExp to type the frontend expects if necessary. Fixes #116.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Fri, 14 Nov 2008 16:26:12 +0100 |
parents | 038ea84f2d9d |
children | bfabbac8e705 |
files | gen/toir.cpp |
diffstat | 1 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/toir.cpp Wed Nov 12 06:35:20 2008 +0100 +++ b/gen/toir.cpp Fri Nov 14 16:26:12 2008 +0100 @@ -537,7 +537,7 @@ DValue* AddAssignExp::toElem(IRState* p) { - Logger::print("AddAssignExp::toElem: %s\n", toChars()); + Logger::print("AddAssignExp::toElem: %s | %s\n", toChars(), type->toChars()); LOG_SCOPE; DValue* l = e1->toElem(p); @@ -558,6 +558,9 @@ } DtoAssign(loc, l, res); + if (res->getType() != type) + res = DtoCast(loc, res, type); + return res; } @@ -631,6 +634,9 @@ } DtoAssign(loc, l, res); + if (res->getType() != type) + res = DtoCast(loc, res, type); + return res; } @@ -670,6 +676,9 @@ } DtoAssign(loc, l, res); + if (res->getType() != type) + res = DtoCast(loc, res, type); + return res; } @@ -709,6 +718,9 @@ } DtoAssign(loc, l, res); + if (res->getType() != type) + res = DtoCast(loc, res, type); + return res; } @@ -738,6 +750,9 @@ DValue* res = DtoBinRem(l->getType(), l, r); DtoAssign(loc, l, res); + if (res->getType() != type) + res = DtoCast(loc, res, type); + return res; }