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 5 union UElement { 6 void* pointer; 7 int integer; 8 }; 9 struct UColToken { 10 unsigned source; 11 unsigned char **rulesToParseHdl; 12 }; 13 uhash_hashTokens(const union UElement k)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