Viewing file: ipa-sra-17.c (1.57 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-O2 -fdump-ipa-sra -fdump-tree-optimized" } */
#define DOIT #define DONT
extern int extern_leaf (int);
/* ----- 1 ----- */ #ifdef DOIT static int __attribute__((noinline)) whee_1 (int i, int j) { return extern_leaf (i * j) + 1; }
static int foo_1 (int i, int j);
static int __attribute__((noinline)) baz_1 (int i, int j) { int a = 5; if (j) a = foo_1 (i, j - 1); return whee_1 (i, j) + a + 1; }
static int __attribute__((noinline)) bar_1 (int i, int j) { return baz_1 (i, j) + 1; }
static int __attribute__((noinline)) foo_1 (int i, int j) { return bar_1 (i, j) + 1; }
static int __attribute__((noinline)) inter_1 (int i, int j) { return foo_1 (i, j) + 1; } #endif
/* ----- 2 ----- */ #ifdef DONT static int __attribute__((noinline)) whee_2 (int i, int j) { return extern_leaf (i * j) + 2; }
static int foo_2 (int i, int j);
static int __attribute__((noinline)) baz_2 (int i, int j) { int a = 6; if (j) a = foo_2 (i, j - 1); return whee_2 (i, j) + a + 2; }
static int __attribute__((noinline)) bar_2 (int i, int j) { return baz_2 (i, j) + 2; }
static int __attribute__((noinline)) foo_2 (int i, int j) { return bar_2 (i, j) + 2; } #endif
/* ----- entries ----- */ #ifdef DOIT int entry_1 (int i, int j) { inter_1 (i, j); return i + j + 1; } #endif
#ifdef DONT int entry_2 (int i, int j) { #ifdef DOIT inter_1 (i, j); #endif return i + j + bar_2 (i, j); } #endif
/* { dg-final { scan-ipa-dump-times "Will remove return value" 5 "sra" } } */ /* { dg-final { scan-tree-dump-times "return;" 5 "optimized"} } */
|