// Compiler should not generate too many lexical blocks for this function. // { dg-do compile { target { i?86-*-* x86_64-*-* } } } // { dg-options "-O0 -fno-exceptions -g -dA" } union UElement { void* pointer; int integer; }; struct UColToken { unsigned source; unsigned char **rulesToParseHdl; }; int uhash_hashTokens(const union UElement k) { int hash = 0; struct UColToken *key = (struct UColToken *)k.pointer; if (key != 0) { int len = (key->source & 0xFF000000)>>24; int inc = ((len - 32) / 32) + 1; const unsigned char *p = (key->source & 0x00FFFFFF) + *(key->rulesToParseHdl); const unsigned char *limit = p + len; hash = *p + *limit; } return hash; } // { dg-final { scan-assembler-not "LBB10" } }