/* { dg-do compile { target i?86-pc-cygwin } } */
/* { dg-do compile { target i?86-*-mingw* x86_64-*-mingw* } } */
/* { dg-do compile { target arm*-*-pe* } } */

/* { dg-options -mnop-fun-dllimport } */

/* The dllimport attribute should be ignored for functions. */
__declspec (dllimport) void dllimpfn ();

/* The dllimport attribute should not be ignored for variables. */
__declspec (dllimport) int dllimpvar;

/* The dllexport attribute should not be ignored. */
__declspec (dllexport) void dllexp ()
{
  dllimpfn ();
  dllimpvar = 0;
}

/* { dg-final { scan-assembler-not "(__imp_dllimpfn|_imp__dllimpfn)" } } */
/* { dg-final { scan-assembler "(__imp_dllimpvar|_imp__dllimpvar)" } } */
/* { dg-final { scan-assembler "\.section\[ \t\]*.drectve\n\.*-export:\[\\\\\"\]*dllexp" } } */
