OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [graphite/] [pr43026.C] - Rev 801

Go to most recent revision | Compare with Previous | Blame | View Log

/* { dg-do compile } */
/* { dg-options "-O2 -fgraphite-identity" } */

template<typename Tp > class vector { };

template <int rank, int dim> class Tensor;

template <int dim> class Tensor<1,dim> {
public:
  Tensor (const Tensor<1,dim> &);
private:
  double values[(dim != 0) ? (dim) : 1];
};

template <int dim>
#ifdef NOINLINE
// declaring this noinline prevents the ICE
__attribute__ ((noinline))
#endif
Tensor<1,dim>::Tensor (const Tensor<1,dim> &p)
{
  for (unsigned int i = 0; i < dim; ++i)
    values[i] = p.values[i];
}

template <int rank, int dim>
class Tensor {
  Tensor<rank-1,dim> subtensor[dim];
};

template <int dim> class Base {
public:
  const unsigned int npoints;
  const unsigned int dofs;
  const Tensor<2,dim> &s2d (const unsigned int fno,
                            const unsigned int pno) const;
  void getf2d (vector<Tensor<2,dim> >& d2) const;
};

template <int dim>
void Base<dim>:: getf2d
  (vector<Tensor<2,dim> > &d2) const
{
  unsigned int point, sf;

  for (point = 0; point < npoints; ++point)
    for (sf = 0; sf < dofs; ++sf)
      Tensor<2,dim> tmp = s2d (sf, point);
}

template void Base<3>::getf2d (vector<Tensor<2,3> > &) const;

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.