mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			646 B
		
	
	
	
		
			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;
 | |
| }
 |