comparison gen/toir.cpp @ 201:8f9191180c7a trunk

[svn r217] Updated: the rebuild profiles. Fixed: way to find class data fields was too strict type wise. Fixed: foreach resulting in an implicit delegate could fail.
author lindquist
date Mon, 12 May 2008 22:44:25 +0200
parents bfcb657756f6
children e881c9b1c738
comparison
equal deleted inserted replaced
200:e937752e4541 201:8f9191180c7a
1244 if (v->isSlice()) { 1244 if (v->isSlice()) {
1245 assert(!gIR->topexp() || gIR->topexp()->e1 != this); 1245 assert(!gIR->topexp() || gIR->topexp()->e1 != this);
1246 return v; 1246 return v;
1247 } 1247 }
1248 1248
1249 else if (u->isLRValue() || (u->isVar() && u->isVar()->lval)) 1249 else if (DLRValue* lr = u->isLRValue())
1250 return new DLRValue(lr->getLType(), lr->getLVal(), to, v->getRVal());
1251
1252 else if (u->isVar() && u->isVar()->lval)
1250 return new DLRValue(e1->type, u->getLVal(), to, v->getRVal()); 1253 return new DLRValue(e1->type, u->getLVal(), to, v->getRVal());
1251 1254
1252 else if (gIR->topexp() && gIR->topexp()->e1 == this) 1255 else if (gIR->topexp() && gIR->topexp()->e1 == this)
1253 return new DLRValue(e1->type, u->getLVal(), to, v->getRVal()); 1256 return new DLRValue(e1->type, u->getLVal(), to, v->getRVal());
1254 1257