39 lines
567 B
C
39 lines
567 B
C
/* { dg-do run } */
|
|
/* { dg-options "-O2" } */
|
|
/* { dg-skip-if "" { ! global_constructor } } */
|
|
|
|
/* The ipa-split pass pulls the body of the if(!x) block
|
|
into a separate function to make foo a better inlining
|
|
candidate. Make sure this new function isn't also run
|
|
as a static constructor. */
|
|
|
|
#include <stdlib.h>
|
|
|
|
int x, y;
|
|
|
|
void __attribute__((noinline))
|
|
bar(void)
|
|
{
|
|
y++;
|
|
}
|
|
|
|
void __attribute__((constructor))
|
|
foo(void)
|
|
{
|
|
if (!x)
|
|
{
|
|
bar();
|
|
y++;
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
x = 1;
|
|
foo();
|
|
foo();
|
|
if (y != 2)
|
|
abort();
|
|
exit(0);
|
|
}
|