diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-29 14:11:58 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-29 14:11:58 +0000 |
commit | 39309d2ed54fc49cd55b64b7d667baebe51935bd (patch) | |
tree | fc54e8ca0216db0859777fe6558b4f473ca6ae59 /gcc/testsuite/gcc.c-torture/execute/20090113-1.c | |
parent | 4c5fcca622ac108db1d93965d1d11701d85e70e5 (diff) | |
download | gcc-39309d2ed54fc49cd55b64b7d667baebe51935bd.tar.gz |
2009-03-29 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/20090113-1.c: New testcase.
* gcc.c-torture/execute/20090113-2.c: Likewise.
* gcc.c-torture/execute/20090113-3.c: Likewise.
* gcc.c-torture/execute/20090207-1.c: Likewise.
* gcc.c-torture/compile/20090114-1.c: Likewise.
* gcc.c-torture/compile/20090328-1.c: Likewise.
* gcc.dg/noncompile/920507-1.c: Fix out-of-bounds array access.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145234 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20090113-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20090113-1.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20090113-1.c b/gcc/testsuite/gcc.c-torture/execute/20090113-1.c new file mode 100644 index 00000000000..9c5f01d71fa --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20090113-1.c @@ -0,0 +1,61 @@ +typedef struct descriptor_dimension +{ + int stride; + int lbound; + int ubound; +} descriptor_dimension; +typedef struct { + int *data; + int dtype; + descriptor_dimension dim[7]; +} gfc_array_i4; + +void +msum_i4 (gfc_array_i4 * const retarray, + gfc_array_i4 * const array, + const int * const pdim) +{ + int count[7]; + int extent[7]; + int * dest; + const int * base; + int dim; + int n; + int len; + + dim = (*pdim) - 1; + len = array->dim[dim].ubound + 1 - array->dim[dim].lbound; + + for (n = 0; n < dim; n++) + { + extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound; + count[n] = 0; + } + + dest = retarray->data; + base = array->data; + + do + { + int result = 0; + + for (n = 0; n < len; n++, base++) + result += *base; + *dest = result; + + count[0]++; + dest += 1; + } + while (count[0] != extent[0]); +} + +int main() +{ + int rdata[3]; + int adata[9]; + gfc_array_i4 retarray = { rdata, 265, { { 1, 1, 3 } } }; + gfc_array_i4 array = { adata, 266, { { 1, 1, 3 }, { 3, 1, 3 } } }; + int dim = 2; + msum_i4 (&retarray, &array, &dim); + return 0; +} |