view gcc/testsuite/gcc.c-torture/compile/990517-1.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* Extracted from the sdm module in perl.  */

/* { dg-require-stack-size "12*2+8+1024+8" } */

typedef struct {
	char *dptr;
	int dsize;
} datum;
extern long sdbm_hash  (char *, int)  ;
extern void  sdbm__putpair   (char *, datum, datum)  ;
void
sdbm__splpage (char *pag, char *New, long int sbit)
{
	datum key;
	datum val;
	register int n;
	register int off = 1024 ;
	char cur[1024 ];
	register short *ino = (short *) cur;
	(void) memcpy(cur, pag, 1024 );
	(void) ({ void *__s = ( pag ); __builtin_memset ( __s , '\0',     1024   ) ; __s; });
	(void) ({ void *__s = ( New ); __builtin_memset ( __s , '\0',     1024   ) ; __s; });
	n = ino[0];
	for (ino++; n > 0; ino += 2) {
		key.dptr = cur + ino[0]; 
		key.dsize = off - ino[0];
		val.dptr = cur + ino[1];
		val.dsize = ino[0] - ino[1];
		(void) sdbm__putpair ((sdbm_hash(( key ).dptr, ( key ).dsize)  & sbit) ? New : pag, key, val);
		off = ino[1];
		n -= 2;
	}
}