svcomp_HarrisLalNoriRajamani-2010SAS-Fig2_false-unreach-label-termination-alloca.c

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:15.0
disk size 1.4 KB
downloadable true
type
attribute value
name no_type
processor id 1
description this is the default benchmark type for rejected benchmarks and benchmarks that are not associated with a type.
owning community none
loading contents
#include <stdlib.h>

extern int __VERIFIER_nondet_int(void);

int foo(void) {
    int* y = alloca(sizeof(int));
    if (__VERIFIER_nondet_int()) {
        if (__VERIFIER_nondet_int()) {
            if (__VERIFIER_nondet_int()) {
                *y = 0;
            } else {
                *y = 1;
            }
        } else {
            if (__VERIFIER_nondet_int()) {
                *y = 2;
            } else {
                *y = 3;
            }
        }
    } else {
        if (__VERIFIER_nondet_int()) {
            if (__VERIFIER_nondet_int()) {
                *y = 4;
            } else {
                *y = 5;
            }
        } else {
            if (__VERIFIER_nondet_int()) {
                *y = 6;
            } else {
                *y = 7;
            }
        }
    } return *y;
}

int main() {
    int* d = alloca(sizeof(int));
    int* x = alloca(sizeof(int));
    *d = 1;
    
    if (__VERIFIER_nondet_int()) {
        *d = *d - 1;
    }
    
    if (__VERIFIER_nondet_int()) {
        foo();
    }
    if (__VERIFIER_nondet_int()) {
        foo();
    }
    if (__VERIFIER_nondet_int()) {
        foo();
    }
    if (__VERIFIER_nondet_int()) {
        foo();
    }
    
    // I think there is a typo in the paper and the following
    // decrement can be omitted.
    if (__VERIFIER_nondet_int()) {
        *d = *d - 1;
    }
    
    while (*x > 0) {
        *x = *x - *d;
    }
    return 0;
}
popout

content may be truncated. 'popout' for larger text window.

actions get anonymous link download benchmark