//  PR c++/8378
//  Ignore  dllimport of static members if marked inlined.
//  or if definition follows  declaration in dllimported class.

// { dg-do compile { target i?86-*-cygwin* i?86-*-mingw*} }
// { dg-options { -Wall -W } }

struct  __attribute__((dllimport)) Foo
{
  static int static_int;
  static void static_func1();
  static void static_func2();
 };

void Foo::static_func1()	//  { dg-warning "redeclared without dllimport" }
{
}

inline void Foo::static_func2()
{
}

void testfoo()
{ 
  Foo::static_func1();
  Foo::static_func2();
}

// { dg-final { scan-assembler-not "__imp__" } }
