/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-O2 -fgraphite-identity" } */
|
/* { dg-options "-O2 -fgraphite-identity" } */
|
|
|
template class vector { };
|
template class vector { };
|
|
|
template class Tensor;
|
template class Tensor;
|
|
|
template class Tensor<1,dim> {
|
template class Tensor<1,dim> {
|
public:
|
public:
|
Tensor (const Tensor<1,dim> &);
|
Tensor (const Tensor<1,dim> &);
|
private:
|
private:
|
double values[(dim != 0) ? (dim) : 1];
|
double values[(dim != 0) ? (dim) : 1];
|
};
|
};
|
|
|
template
|
template
|
#ifdef NOINLINE
|
#ifdef NOINLINE
|
// declaring this noinline prevents the ICE
|
// declaring this noinline prevents the ICE
|
__attribute__ ((noinline))
|
__attribute__ ((noinline))
|
#endif
|
#endif
|
Tensor<1,dim>::Tensor (const Tensor<1,dim> &p)
|
Tensor<1,dim>::Tensor (const Tensor<1,dim> &p)
|
{
|
{
|
for (unsigned int i = 0; i < dim; ++i)
|
for (unsigned int i = 0; i < dim; ++i)
|
values[i] = p.values[i];
|
values[i] = p.values[i];
|
}
|
}
|
|
|
template
|
template
|
class Tensor {
|
class Tensor {
|
Tensor subtensor[dim];
|
Tensor subtensor[dim];
|
};
|
};
|
|
|
template class Base {
|
template class Base {
|
public:
|
public:
|
const unsigned int npoints;
|
const unsigned int npoints;
|
const unsigned int dofs;
|
const unsigned int dofs;
|
const Tensor<2,dim> &s2d (const unsigned int fno,
|
const Tensor<2,dim> &s2d (const unsigned int fno,
|
const unsigned int pno) const;
|
const unsigned int pno) const;
|
void getf2d (vector >& d2) const;
|
void getf2d (vector >& d2) const;
|
};
|
};
|
|
|
template
|
template
|
void Base:: getf2d
|
void Base:: getf2d
|
(vector > &d2) const
|
(vector > &d2) const
|
{
|
{
|
unsigned int point, sf;
|
unsigned int point, sf;
|
|
|
for (point = 0; point < npoints; ++point)
|
for (point = 0; point < npoints; ++point)
|
for (sf = 0; sf < dofs; ++sf)
|
for (sf = 0; sf < dofs; ++sf)
|
Tensor<2,dim> tmp = s2d (sf, point);
|
Tensor<2,dim> tmp = s2d (sf, point);
|
}
|
}
|
|
|
template void Base<3>::getf2d (vector > &) const;
|
template void Base<3>::getf2d (vector > &) const;
|
|
|