/* { dg-do compile } */
/* { dg-options "-O3 -fwhole-program" } */
/* { dg-final { scan-assembler "foo1" } } */
/* { dg-final { scan-assembler "foo2" } } */
/* { dg-final { scan-assembler "foo3" } } */
/* { dg-final { scan-assembler "foo4" } } */
/* { dg-final { scan-assembler "foo5" } } */
/* { dg-final { scan-assembler-not "foo6" } } */
/* { dg-final { scan-assembler "bar1" } } */
/* { dg-final { scan-assembler "bar2" } } */
/* { dg-final { scan-assembler "bar3" } } */
/* { dg-final { scan-assembler "bar4" } } */
/* { dg-final { scan-assembler "bar5" } } */
/* { dg-final { scan-assembler-not "bar6" } } */

extern void foo1 (void) __attribute__((externally_visible));
void foo1 (void) { }

extern void foo2 (void) __attribute__((externally_visible));
__attribute__((externally_visible)) void foo2 (void) { }

extern void foo3 (void);
__attribute__((externally_visible)) void foo3 (void) { }

__attribute__((externally_visible)) void foo4 (void) { }

void foo5 (void) { }
extern void foo5 (void) __attribute__((externally_visible));

void foo6 (void) { }

extern char *bar1 __attribute__((externally_visible));
char *bar1;

extern char *bar2 __attribute__((externally_visible));
char *bar2 __attribute__((externally_visible));

extern char *bar3;
char *bar3 __attribute__((externally_visible));

char *bar4 __attribute__((externally_visible));

char *bar5;
extern char *bar5 __attribute__((externally_visible));

char *bar6;

int main (void) { }
