Mercurial > projects > ldc
diff gen/toir.cpp @ 440:d8dc221d3db7
Insert array bound checks for slices.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Wed, 30 Jul 2008 19:02:13 +0200 |
parents | 47b64d06eb9f |
children | 44f08170f4ef |
line wrap: on
line diff
--- a/gen/toir.cpp Wed Jul 30 18:38:56 2008 +0200 +++ b/gen/toir.cpp Wed Jul 30 19:02:13 2008 +0200 @@ -1009,12 +1009,12 @@ } else if (e1type->ty == Tsarray) { if(global.params.useArrayBounds) - DtoArrayBoundsCheck(loc, l, r); + DtoArrayBoundsCheck(loc, l, r, false); arrptr = DtoGEP(l->getRVal(), zero, r->getRVal()); } else if (e1type->ty == Tarray) { if(global.params.useArrayBounds) - DtoArrayBoundsCheck(loc, l, r); + DtoArrayBoundsCheck(loc, l, r, false); arrptr = DtoArrayPtr(l); arrptr = DtoGEP1(arrptr,r->getRVal()); } @@ -1071,6 +1071,9 @@ LLValue* vlo = lo->getRVal(); LLValue* vup = up->getRVal(); + if(global.params.useArrayBounds && (etype->ty == Tsarray || etype->ty == Tarray)) + DtoArrayBoundsCheck(loc, e, up, true); + // offset by lower eptr = DtoGEP1(eptr, vlo);