Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/constructor-1.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/constructor-1.c Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,38 @@ +/* { 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); +}