1// Compiler should not generate too many lexical blocks for this function. 2// { dg-do compile { target { i?86-*-* x86_64-*-* } } } 3// { dg-options "-O0 -fno-exceptions -g -dA" } 4 5union UElement { 6 void* pointer; 7 int integer; 8}; 9struct UColToken { 10 unsigned source; 11 unsigned char **rulesToParseHdl; 12}; 13 14int uhash_hashTokens(const union UElement k) 15{ 16 int hash = 0; 17 struct UColToken *key = (struct UColToken *)k.pointer; 18 if (key != 0) { 19 int len = (key->source & 0xFF000000)>>24; 20 int inc = ((len - 32) / 32) + 1; 21 const unsigned char *p = (key->source & 0x00FFFFFF) 22 + *(key->rulesToParseHdl); 23 const unsigned char *limit = p + len; 24 hash = *p + *limit; 25 } 26 return hash; 27} 28 29// { dg-final { scan-assembler-not "LBB10" } } 30