From 747b3bdc8573d6fecebaa1ae9fa39491136033a4 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Thu, 1 Aug 2002 14:21:05 +0000 Subject: [PATCH] Feature test for stack size bigger than immed. field of SAVE instruction. Also tests code generation for code with mixed indices. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3197 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/LLC/bigstack.c | 79 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 test/LLC/bigstack.c diff --git a/test/LLC/bigstack.c b/test/LLC/bigstack.c new file mode 100644 index 00000000000..eacb76a7c37 --- /dev/null +++ b/test/LLC/bigstack.c @@ -0,0 +1,79 @@ +/*===- 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; +}