Cast result of ...AssignExp to type the frontend expects if necessary. Fixes #116.

This commit is contained in:
Christian Kamm
2008-11-14 16:26:12 +01:00
parent 7b1d4cf975
commit 1228595e7e

View File

@@ -537,7 +537,7 @@ DValue* AddExp::toElem(IRState* p)
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 @@ DValue* AddAssignExp::toElem(IRState* p)
}
DtoAssign(loc, l, res);
if (res->getType() != type)
res = DtoCast(loc, res, type);
return res;
}
@@ -631,6 +634,9 @@ DValue* MinAssignExp::toElem(IRState* p)
}
DtoAssign(loc, l, res);
if (res->getType() != type)
res = DtoCast(loc, res, type);
return res;
}
@@ -670,6 +676,9 @@ DValue* MulAssignExp::toElem(IRState* p)
}
DtoAssign(loc, l, res);
if (res->getType() != type)
res = DtoCast(loc, res, type);
return res;
}
@@ -709,6 +718,9 @@ DValue* DivAssignExp::toElem(IRState* p)
}
DtoAssign(loc, l, res);
if (res->getType() != type)
res = DtoCast(loc, res, type);
return res;
}
@@ -738,6 +750,9 @@ DValue* ModAssignExp::toElem(IRState* p)
DValue* res = DtoBinRem(l->getType(), l, r);
DtoAssign(loc, l, res);
if (res->getType() != type)
res = DtoCast(loc, res, type);
return res;
}