Mercurial > projects > ldc
comparison dmd/optimize.c @ 1103:b30fe7e1dbb9
- Updated to DMD frontend 1.041.
- Removed dmd/inifile.c , it's not under a free license, replaced with libconfig based config file.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail.com> |
---|---|
date | Thu, 12 Mar 2009 20:37:27 +0100 |
parents | c519caae3181 |
children | ab186e535e72 |
comparison
equal
deleted
inserted
replaced
1102:ae950bd712d3 | 1103:b30fe7e1dbb9 |
---|---|
232 && !ve->var->isImportedSymbol()) | 232 && !ve->var->isImportedSymbol()) |
233 { | 233 { |
234 TypeSArray *ts = (TypeSArray *)ve->type; | 234 TypeSArray *ts = (TypeSArray *)ve->type; |
235 integer_t dim = ts->dim->toInteger(); | 235 integer_t dim = ts->dim->toInteger(); |
236 if (index < 0 || index >= dim) | 236 if (index < 0 || index >= dim) |
237 error("array index %lld is out of bounds [0..%lld]", index, dim); | 237 error("array index %jd is out of bounds [0..%jd]", index, dim); |
238 e = new SymOffExp(loc, ve->var, index * ts->next->size()); | 238 e = new SymOffExp(loc, ve->var, index * ts->next->size()); |
239 e->type = type; | 239 e->type = type; |
240 return e; | 240 return e; |
241 } | 241 } |
242 } | 242 } |
419 if (e2->isConst() == 1) | 419 if (e2->isConst() == 1) |
420 { | 420 { |
421 integer_t i2 = e2->toInteger(); | 421 integer_t i2 = e2->toInteger(); |
422 d_uns64 sz = e1->type->size() * 8; | 422 d_uns64 sz = e1->type->size() * 8; |
423 if (i2 < 0 || i2 > sz) | 423 if (i2 < 0 || i2 > sz) |
424 { | 424 { error("shift assign by %jd is outside the range 0..%zu", i2, sz); |
425 error("shift assign by %lld is outside the range 0..%"PRIuSIZE, i2, sz); | |
426 e2 = new IntegerExp(0); | 425 e2 = new IntegerExp(0); |
427 } | 426 } |
428 } | 427 } |
429 } | 428 } |
430 return this; | 429 return this; |
515 if (e->e2->isConst() == 1) | 514 if (e->e2->isConst() == 1) |
516 { | 515 { |
517 integer_t i2 = e->e2->toInteger(); | 516 integer_t i2 = e->e2->toInteger(); |
518 d_uns64 sz = e->e1->type->size() * 8; | 517 d_uns64 sz = e->e1->type->size() * 8; |
519 if (i2 < 0 || i2 > sz) | 518 if (i2 < 0 || i2 > sz) |
520 { | 519 { e->error("shift by %jd is outside the range 0..%zu", i2, sz); |
521 error("shift by %lld is outside the range 0..%"PRIuSIZE, i2, sz); | |
522 e->e2 = new IntegerExp(0); | 520 e->e2 = new IntegerExp(0); |
523 } | 521 } |
524 if (e->e1->isConst() == 1) | 522 if (e->e1->isConst() == 1) |
525 ex = (*shift)(e->type, e->e1, e->e2); | 523 ex = (*shift)(e->type, e->e1, e->e2); |
526 } | 524 } |