/* { dg-do run } */
/* Check that classes with virtual member functions works,
   when using it as declared type. */
struct base {
    float data [100];

    base() = default;
    virtual ~base() = default;
};

struct derived : public base {
    int scalar, array[5];

    derived() = default;
    void do_work ()
    {
      int error = 0;
      #pragma omp target map (tofrom: this[ :1], error)
      {
	if (scalar != 42 || this->array[0] != 123 || array[4] != 555)
	  error = 1;
	if (data[0] != 333 || data[99] != -3)
	  error = 1;
	this->scalar = 99;
	array[0] = 5;
	array[4] = -4;
	this->data[0] = 11;
	this->data[99] = 99;
      }
      if (error)
	__builtin_abort ();
      if (data[0] != 11 || data[99] != 99)
	__builtin_abort ();
      if (scalar != 99 || array[0] != 5 || array[4] != -4)
	__builtin_abort ();
    }   
};

int
main ()
{
  struct derived x;
  x.data[0] = 333;
  x.data[99] = -3;
  x.scalar = 42;
  x.array[0] = 123;
  x.array[4] = 555;
  x.do_work ();
  return 0;
}
