view gcc/testsuite/gcc.dg/lto/pr88297_0.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
line wrap: on
line source

/* { dg-require-effective-target lto } */
/* { dg-lto-options { { -flto -O3 -fipa-cp -fipa-cp-clone } } } */
/* { dg-lto-do run } */

/* In order to trigger IPA-CP cloning we have to:

  1. Put the calls in main into a loop; otherwise everything is
  cold and we would not clone.

  2. Make different foos and bars actually semantically different;
  otherwise IPA-ICF unified them (as it should).

*/

volatile int g;

void __attribute__ ((noipa))
use (int v)
{
  g = v;
}

static int __attribute__ ((noinline))
foo (int arg)
{
  return 7 * arg;
}

static int __attribute__ ((noinline))
bar (int arg)
{
  return arg * arg;
}

extern int __attribute__ ((noinline))
entry2 (void);

int  __attribute__ ((noipa))
get_opaque_number (void)
{
  return 1;
}

int main (void)
{
  int i;
  for (i = 0; i < get_opaque_number (); i++)
    {
      use (bar (3));
      use (bar (4));
      use (foo (5));
      use (foo (6));

      entry2 ();
    }
  return 0;
}