// Compiler should not generate too many lexical blocks for this function.
// { dg-do compile { target { i?86-*-* x86_64-*-* } } }
// { dg-options "-O0 -fno-exceptions -gdwarf-2 -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" } }