214 lines · 2.8 KB · C
RawDownload
#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;} /* actually, profiling test */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 *//* XXX: currently: bug */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;} /* error */int test13(void){    char pad1 = 0;    char tab[10];    char pad2 = 0;    memset(tab, 'a', sizeof(tab));    return strlen(tab);} int (*table_test[])(void) = {    test1,    test1,    test2,    test3,    test4,    test5,    test6,    test7,    test8,    test9,    test10,    test11,    test12,    test13,}; 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 */  

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t