/* APPLE LOCAL begin radar 3869444 */
/* { dg-do compile { target "powerpc*-*-darwin*" } } */
/* { dg-options "-m64 -O1 -static" } */
typedef unsigned long long uint64_t;

static int
match(name, pat)
 uint64_t *name, *pat;
{
 int ok=0, negate_range;
 uint64_t c, k;

  c = *pat++;
  switch (c & 0xffffffffffULL) {
  case ((uint64_t)(('[')|0x8000000000ULL)):
   if ((negate_range = ((*pat & 0xffffffffffULL) == ((uint64_t)(('!')|0x8000000000ULL)) )) != '\0')
    ++pat;
   while (((c = *pat++) & 0xffffffffffULL) )
    if ((*pat & 0xffffffffffULL) == ((uint64_t)(('-')|0x8000000000ULL))) 
      {
       pat += 2;
      } 

   if (ok == negate_range)
    return(0);
   break;
  }
 return(*name == '\0');
}
/* APPLE LOCAL end radar 3869444 */
