/*===- test/Regression/Transforms/Scalar/DecomposeMultiDimRefs.cpp -----=* * * This is a feature test that checks for correct code generation * of the SAVE instruction when the stack size does not fit in the * immediate field of the SAVE instruction. This happens in main(). *===---------------------------------------------------------------------===*/ #include #include typedef struct Flat_struct { char c; float x; } Flat_t; typedef struct Mixed_struct { int N; double A[10]; double B[10][10]; Flat_t F[10]; } Mixed_t; double AddMixed(Mixed_t* M) { double sum = 0; int i, j; for (i=0; i < 10; ++i) sum += M->A[i]; for (i=0; i < 10; ++i) for (j=0; j < 10; ++j) sum += M->B[i][j]; for (i=0; i < 10; ++i) { sum += (double) M->F[i].c; sum += M->F[i].x; } return sum; } void InitializeMixed(Mixed_t* M, int base) { int i, j; for (i=0; i < 10; ++i) M->A[i] = i + base; for (i=0; i < 10; ++i) for (j=0; j < 10; ++j) M->B[i][j] = i*10 + j + base; for (i=0; i < 10; ++i) { M->F[i].c = 'Q'; M->F[i].x = i / 10 + base; } } int main(int argc, char** argv) { Mixed_t M; Mixed_t MA[4]; int i; InitializeMixed(&M, 100); printf("Sum(M) = %.2f\n", AddMixed(&M)); for (i=0; i < 4; i++) { InitializeMixed(&MA[i], 100 * (i+2)); printf("Sum(MA[%d]) = %.2f\n", i, AddMixed(&MA[i])); } return 0; }