gcc/libitm/testsuite/libitm.c/dropref-2.c

37 lines
646 B
C

/* { dg-xfail-run-if "unsupported" { *-*-* } } */
#include <stdlib.h>
#include <libitm.h>
/* Test that _ITM_dropReferences() forces a commit of given chunk. */
unsigned char pp[100];
int main()
{
int i;
for(i=0; i < 100; ++i)
pp[i]=0x22;
__transaction_atomic {
for(i=0; i < 100; ++i)
pp[i]=0x33;
/* This should write-through pp[0..49]... */
_ITM_dropReferences (pp, 50);
/* ...while this should revert everything but pp[0..49]. */
__transaction_cancel;
}
for(i=0; i < 50; ++i)
if (pp[i] != 0x33)
abort();
for(i=50; i < 100; ++i)
if (pp[i] != 0x22)
abort();
return 0;
}