Julian Seward 7c542ccd39 Add new files resulting from merging in the 2.4.0 line. Many of these
seem to be simply duplication of the x86 instruction set tests into
the addrcheck and helgrind trees.  I'm not sure what this duplication
achieves.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3264
2005-03-10 23:23:45 +00:00

71 lines
869 B
C

#include <stdlib.h>
#include "../memcheck.h"
struct n {
struct n *l;
struct n *r;
};
struct n *mk(struct n *l, struct n *r)
{
struct n *n = malloc(sizeof(*n));
n->l = l;
n->r = r;
return n;
}
static struct n *mkcycle()
{
register struct n *a, *b, *c;
a = mk(0,0);
b = mk(a,0);
c = mk(b,0);
a->l = c;
return a;
}
int main()
{
struct n *volatile c1, *volatile c2;
/* two simple cycles */
c1 = mkcycle();
c2 = mkcycle();
c1 = c2 = 0;
//VALGRIND_DO_LEAK_CHECK;
/* one cycle linked to another */
c1 = mkcycle();
c2 = mkcycle();
/* This is to make sure we end up merging cliques; see
mac_leakcheck.c */
if (c1 < c2)
c2->r = c1;
else
c1->r = c2;
c1 = c2 = 0;
//VALGRIND_DO_LEAK_CHECK;
/* two linked cycles */
c1 = mkcycle();
c2 = mkcycle();
c1->r = c2;
c2->r = c1;
c1 = c2 = 0;
VALGRIND_DO_LEAK_CHECK;
return 0;
}