Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/tree-ssa/flatten-3.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do compile } */ /* { dg-options "-O2 -fno-ipa-icf" } */ extern void do_something_usefull(); /* Check that we finish compiling even if instructed to flatten a cyclic callgraph. Verify we correctly flatten with another function marked flatten in the callgraph. */ void __attribute__((flatten)) direct(void) { direct(); } void __attribute__((flatten)) indirect(void); static void indirect1(void) { indirect(); } void __attribute__((flatten)) indirect(void) { indirect1(); } void __attribute__((flatten)) doubleindirect(void); static void doubleindirect2(void) { doubleindirect(); do_something_usefull (); } static void doubleindirect1(void) { doubleindirect2(); } void __attribute__((flatten)) doubleindirect(void) { doubleindirect1(); } static void subcycle1(void); static void subcycle2(void) { subcycle1(); do_something_usefull (); } static void subcycle1(void) { subcycle2(); } void __attribute__((flatten)) subcycle(void) { subcycle1(); } static void doublesubcycle1(void); static void doublesubcycle2(void); static void doublesubcycle3(void) { doublesubcycle1(); do_something_usefull (); } static void doublesubcycle2(void) { doublesubcycle3(); } static void doublesubcycle1(void) { doublesubcycle2(); } void __attribute__((flatten)) doublesubcycle(void) { doublesubcycle1(); } /* { dg-final { scan-assembler "cycle\[123\]\[: \t\n\]" } } */