view gcc/testsuite/g++.dg/ipa/pr77333.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { dg-do run }
// { dg-options "-O2 -fno-ipa-sra" }

volatile int global;
int __attribute__((noinline, noclone))
get_data (int i)
{
  global = i;
  return i;
}

typedef int array[32];

namespace {

char buf[512];

class A
{
public:
  int field;
  char *s;

  A() : field(223344)
  {
    s = buf;
  }

  int __attribute__((noinline))
  foo (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j,
       int k, int l, int m, int n, int o, int p, int q, int r, int s, int t)
  {
    global = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t;
    return global;
  }

  int __attribute__((noinline))
  bar()
  {
    int r = foo (get_data (1), get_data (1), get_data (1), get_data (1),
		 get_data (1), get_data (1), get_data (1), get_data (1),
		 get_data (1), get_data (1), get_data (1), get_data (1),
		 get_data (1), get_data (1), get_data (1), get_data (1),
		 get_data (1), get_data (1), get_data (1), get_data (1));

    if (field != 223344)
      __builtin_abort ();
    return 0;
  }
};

}

int main (int argc, char **argv)
{
  A a;
  int r = a.bar();
  r = a.bar ();
  if (a.field != 223344)
      __builtin_abort ();
  if (global != 20)
    __builtin_abort ();

  return r;
}