Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.c-torture/execute/20010910-1.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* Test case contributed by Ingo Rohloff <rohloff@in.tum.de>. Code distilled from Linux kernel. */ /* Compile this program with a gcc-2.95.2 using "gcc -O2" and run it. The result will be that rx_ring[1].next == 0 (it should be == 14) and ep.skbuff[4] == 5 (it should be 0) */ extern void abort(void); struct epic_rx_desc { unsigned int next; }; struct epic_private { struct epic_rx_desc *rx_ring; unsigned int rx_skbuff[5]; }; static void epic_init_ring(struct epic_private *ep) { int i; for (i = 0; i < 5; i++) { ep->rx_ring[i].next = 10 + (i+1)*2; ep->rx_skbuff[i] = 0; } ep->rx_ring[i-1].next = 10; } static int check_rx_ring[5] = { 12,14,16,18,10 }; int main(void) { struct epic_private ep; struct epic_rx_desc rx_ring[5]; int i; for (i=0;i<5;i++) { rx_ring[i].next=0; ep.rx_skbuff[i]=5; } ep.rx_ring=rx_ring; epic_init_ring(&ep); for (i=0;i<5;i++) { if ( rx_ring[i].next != check_rx_ring[i] ) abort(); if ( ep.rx_skbuff[i] != 0 ) abort(); } return 0; }