diff options
| author | bellard <bellard> | 2002-01-05 17:03:32 +0000 |
|---|---|---|
| committer | bellard <bellard> | 2002-01-05 17:03:32 +0000 |
| commit | 3d22a2aa6dac3833a3e163fb5130e672eb6e3ae4 (patch) | |
| tree | b83535e28f212fd447af4839c18cbb4ad133bc2e | |
| parent | 04ae07f03efe2ac39e187d5ab2650449b3d7be60 (diff) | |
| download | tinycc-3d22a2aa6dac3833a3e163fb5130e672eb6e3ae4.tar.gz tinycc-3d22a2aa6dac3833a3e163fb5130e672eb6e3ae4.tar.bz2 | |
bounding tests
| -rw-r--r-- | boundtest.c | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/boundtest.c b/boundtest.c new file mode 100644 index 0000000..2266ab7 --- /dev/null +++ b/boundtest.c @@ -0,0 +1,201 @@ +#include <stdlib.h> +#include <stdio.h> + +#define NB_ITS 1000000 +//#define NB_ITS 1 +#define TAB_SIZE 100 + +int tab[TAB_SIZE]; +int ret_sum; +char tab3[256]; + +int test1(void) +{ + int i, sum = 0; + for(i=0;i<TAB_SIZE;i++) { + sum += tab[i]; + } + return sum; +} + +/* error */ +int test2(void) +{ + int i, sum = 0; + for(i=0;i<TAB_SIZE + 1;i++) { + sum += tab[i]; + } + return sum; +} + +int test3(void) +{ + int sum; + int i, it; + + sum = 0; + for(it=0;it<NB_ITS;it++) { + for(i=0;i<TAB_SIZE;i++) { + sum += tab[i]; + } + } + return sum; +} + +/* ok */ +int test4(void) +{ + int i, sum = 0; + int *tab4; + + tab4 = malloc(20 * sizeof(int)); + for(i=0;i<20;i++) { + sum += tab4[i]; + } + free(tab4); + + return sum; +} + +/* error */ +int test5(void) +{ + int i, sum = 0; + int *tab4; + + tab4 = malloc(20 * sizeof(int)); + for(i=0;i<21;i++) { + sum += tab4[i]; + } + free(tab4); + + return sum; +} + +/* error */ +int test6(void) +{ + int i, sum = 0; + int *tab4; + + tab4 = malloc(20 * sizeof(int)); + free(tab4); + for(i=0;i<21;i++) { + sum += tab4[i]; + } + + return sum; +} + +/* error */ +int test7(void) +{ + int i, sum = 0; + int *p; + + for(i=0;i<TAB_SIZE + 1;i++) { + p = &tab[i]; + if (i == TAB_SIZE) + printf("i=%d %x\n", i, p); + sum += *p; + } + return sum; +} + +/* ok */ +int test8(void) +{ + int i, sum = 0; + int tab[10]; + + for(i=0;i<10;i++) { + sum += tab[i]; + } + return sum; +} + +/* error */ +int test9(void) +{ + int i, sum = 0; + char tab[10]; + + for(i=0;i<11;i++) { + sum += tab[i]; + } + return sum; +} + +/* ok */ +int test10(void) +{ + char tab[10]; + char tab1[10]; + + memset(tab, 0, 10); + memcpy(tab, tab1, 10); + memmove(tab, tab1, 10); + return 0; +} + +/* error */ +int test11(void) +{ + char tab[10]; + + memset(tab, 0, 11); + return 0; +} + +/* error */ +int test12(void) +{ + void *ptr; + ptr = malloc(10); + free(ptr); + free(ptr); + return 0; +} + +int (*table_test[])(void) = { + test1, + test1, + test2, + test3, + test4, + test5, + test6, + test7, + test8, + test9, + test10, + test11, + test12, +}; + +int main(int argc, char **argv) +{ + int index; + int (*ftest)(void); + + if (argc < 2) { + printf("usage: boundtest n\n" + "test TCC bound checking system\n" + ); + exit(1); + } + + index = 0; + if (argc >= 2) + index = atoi(argv[1]); + /* well, we also use bounds on this ! */ + ftest = table_test[index]; + ftest(); + + return 0; +} + +/* + * without bound 0.77 s + * with bounds 4.73 + */ |
