URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [pr33669.c] - Rev 297
Compare with Previous | Blame | View Log
extern void abort (void); typedef struct foo_t { unsigned int blksz; unsigned int bf_cnt; } foo_t; #define _RNDUP(x, unit) ((((x) + (unit) - 1) / (unit)) * (unit)) #define _RNDDOWN(x, unit) ((x) - ((x)%(unit))) long long foo (foo_t *const pxp, long long offset, unsigned int extent) { long long blkoffset = _RNDDOWN(offset, (long long )pxp->blksz); unsigned int diff = (unsigned int)(offset - blkoffset); unsigned int blkextent = _RNDUP(diff + extent, pxp->blksz); if (pxp->blksz < blkextent) return -1LL; if (pxp->bf_cnt > pxp->blksz) pxp->bf_cnt = pxp->blksz; return blkoffset; } int main () { foo_t x; long long xx; x.blksz = 8192; x.bf_cnt = 0; xx = foo (&x, 0, 4096); if (xx != 0LL) abort (); return 0; }