// { dg-do run  }
// { dg-options "-O2" }
// 
// Copyright (C) 2001 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 29 May 2001 <nathan@codesourcery.com>

// Bug 2936. We ICE'd on tree inlining a function with an anonymous
// union decl.

inline const unsigned char *Foo (const char *string)
{
  union
  {
    const char *p1;
    const unsigned char *p2;
  };
  p1 = 0;
  p2 = 0;


  p1 = string;
  return p2;
  
}

const unsigned char *Baz (const char *string)
{
  return Foo (string);
}

int main ()
{
  const char *string = "s";
  const unsigned char *result;

  result = Baz (string);
  return (static_cast <const void *> (result)
	  != static_cast <const void *> (string));
}
