aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/930623-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/930623-2.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/930623-2.c91
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;
+ }
+ }
+ }
+ }
+}