diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/930623-2.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/930623-2.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/930623-2.c b/gcc/testsuite/gcc.c-torture/compile/930623-2.c new file mode 100644 index 00000000000..8b61fc14149 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/930623-2.c @@ -0,0 +1,91 @@ +extern unsigned short statesCount; +extern short cn_cadrstates[38][37]; +extern short coutstate[38][37][5]; +extern short ccostate[38][37][5]; +extern short cdel_E[38][37][5]; +extern short cn[38][37][5][3]; +extern short cd[38][37][5][3]; + +extern short c[4][37]; + +extern double vrandNext[64]; + +f (unsigned long long maddrOutState[37][8 * 8], + int maddrIndices[8 * 8], + int delta_E[8 * 8], + int after_x_hash[8 * 8], + int after_y_hash[8 * 8], + int after_z_hash[8 * 8], + int nActivePlane) +{ + int class[8 * 8]; + int ccoeff[8 * 8]; + int nx[8 * 8]; + int ny[8 * 8]; + int nz[8 * 8]; + int phat[8 * 8]; + int i; + int inState; + + for (inState = 0; inState < statesCount; inState++) { + long long Nf[8 * 8]; + long long Ns[8 * 8]; + long long Nb[8 * 8]; + int bbState[8 * 8]; + int not_flag_p[8 * 8]; + int j; + int max_cadrstates = 0; + + for (i = 0; i < nActivePlane; i++) { + int in = maddrIndices[i]; + int k = cn_cadrstates[class[in]][inState]; + + if (k > max_cadrstates) + max_cadrstates = k; + } + + for (j = 0; j < max_cadrstates; j++) { + int coState[8 * 8]; + int N_co[8 * 8]; + for (i = 0; i < nActivePlane; i++) { + int in = maddrIndices[i]; + int k = cn_cadrstates[class[in]][inState]; + + if (j < k-1) { + long long numer = (nx[in] * cn[class[in]][inState][j][0] + + ny[in] * cn[class[in]][inState][j][1] + + nz[in] * cn[class[in]][inState][j][2]); + long long denom = (nx[in] * cd[class[in]][inState][j][0] + + ny[in] * cd[class[in]][inState][j][1] + + nz[in] * cd[class[in]][inState][j][2]); + long long Nj = ((denom == 0) ? 0 : (((((long long)(const64(0,0x10000)) * numer * Ns[in]) / denom) + (long long)(((unsigned) vrandNext[in]) & 0xffff)) >> 16)); + int outState = coutstate[class[in]][inState][j]; + int this_coState = ccostate[class[in]][inState][j]; + int del_E = cdel_E[class[in]][inState][j]; + int old_Ns = Ns[in]; + + maddrOutState[outState][in] += Nj; + Ns[in] -= Nj; + delta_E[in] += Nj * del_E; + if (not_flag_p[in]) { + after_x_hash[in] += Nj * c[0][outState]; + after_y_hash[in] += Nj * c[1][outState]; + after_z_hash[in] += Nj * c[2][outState]; + } + coState[in] = this_coState; + N_co[in] = Nj; + } + else if (j == k-1) { + long long Nj = Ns[in]; + int outState = coutstate[class[in]][inState][j]; + int this_coState = ccostate[class[in]][inState][j]; + int del_E = cdel_E[class[in]][inState][j]; + maddrOutState[outState][in] += Nj; + delta_E[in] += Nj * del_E; + coState[in] = this_coState; + N_co[in] = Nj; + } + } + } + } +} |