root/usr/src/tools/smatch/src/validation/sm_loops6.c
#include "check_debug.h"

extern int xxx;

int test(struct bar *bar)
{
        int a = 10, b = 10, c = 10, d = 10, e = 10;

        while (a--)
                __smatch_implied(a);
        __smatch_implied(a);

        while (--b)
                __smatch_implied(b);
        __smatch_implied(b);

        while (--c >= 0)
                __smatch_implied(c);
        __smatch_implied(c);

        while (d-- >= 0)
                __smatch_implied(d);
        __smatch_implied(d);

        while (e-- >= 0) {
                if (xxx)
                        break;
                __smatch_implied(e);
        }
        __smatch_implied(e);

        return 0;
}


/*
 * check-name: smatch loops #6
 * check-command: smatch -I.. sm_loops6.c
 *
 * check-output-start
sm_loops6.c:10 test() implied: a = '0-9'
sm_loops6.c:11 test() implied: a = '(-1)'
sm_loops6.c:14 test() implied: b = '1-9'
sm_loops6.c:15 test() implied: b = '0'
sm_loops6.c:18 test() implied: c = '0-9'
sm_loops6.c:19 test() implied: c = '(-1)'
sm_loops6.c:22 test() implied: d = '(-1)-9'
sm_loops6.c:23 test() implied: d = '(-2)'
sm_loops6.c:28 test() implied: e = '(-1)-9'
sm_loops6.c:30 test() implied: e = '(-2)-9'
 * check-output-end
 */