/* Verify that DECL_INLINE gets copied between DECLs properly.  */
/* { dg-do compile } */
/* { dg-options "-O1 -fgnu89-inline" } */
/* { dg-final { if [ istarget hppa*-*-* ] { scan-assembler-not "xyzzy?,%r" } else { scan-assembler-not "xyzzy" } } } */

/* Test that declaration followed by definition inlines.  */
static inline int xyzzy0 (int);
static int xyzzy0 (int x) { return x; }
int test0 (void)
{
  return xyzzy0 (5);
}

/* Test that definition following declaration inlines.  */
static int xyzzy1 (int);
static inline int xyzzy1 (int x) { return x; }
int test1 (void)
{
  return xyzzy1 (5);
}

/* Test that redeclaration inside a function body inlines.  */
extern inline int xyzzy2 (int x) { return x; }
int test2 (void)
{
  extern int xyzzy2 (int);
  return xyzzy2 (5);
}
