diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 674028737b2..8d9ce266297 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2009-12-23 Sebastian Pop + + * g++.dg/graphite/id-1.C: New. + * g++.dg/graphite/pr41305.C: New. + * gcc.dg/graphite/id-16.c: New. + * gcc.dg/graphite/interchange-10.c: New. + * gcc.dg/graphite/interchange-11.c: New. + * gcc.dg/graphite/interchange-mvt.c: New. + * gcc.dg/graphite/pr40281.c: New. + * gcc.dg/graphite/run-id-2.c: New. + * gcc.dg/graphite/scop-dsyr2k.c: New. + * gcc.dg/graphite/scop-dsyrk.c: New. + * gcc.dg/graphite/scop-mvt.c: New. + * gcc.dg/graphite/scop-sor.c: New. + * gfortran.dg/graphite/id-18.f90: New. + * gfortran.dg/graphite/interchange-3.f90: New. + * gfortran.dg/graphite/pr42050.f90: New. + 2009-12-23 Dodji Seketeli PR c++/42260 diff --git a/gcc/testsuite/g++.dg/graphite/id-1.C b/gcc/testsuite/g++.dg/graphite/id-1.C new file mode 100644 index 00000000000..5770e905dfb --- /dev/null +++ b/gcc/testsuite/g++.dg/graphite/id-1.C @@ -0,0 +1,39 @@ +#include + +template class Tensor; +template +class Tensor<1,dim> +{ + public: + explicit Tensor (const bool initialize = true); + Tensor (const Tensor<1,dim> &); + double values[(dim!=0) ? (dim) : 1]; +}; +template +Tensor<1,dim>::Tensor (const Tensor<1,dim> &p) +{ + for (unsigned int i=0; i +class KellyErrorEstimator +{ + struct PerThreadData + { + std::vector > > > psi; + PerThreadData (const unsigned int n_solution_vectors, + const unsigned int n_components, + const unsigned int n_q_points); + }; +}; +template +KellyErrorEstimator::PerThreadData:: +PerThreadData (const unsigned int n_solution_vectors, + const unsigned int n_components, + const unsigned int n_q_points) +{ + for (unsigned int i=0; i; diff --git a/gcc/testsuite/g++.dg/graphite/pr41305.C b/gcc/testsuite/g++.dg/graphite/pr41305.C new file mode 100644 index 00000000000..f558e7c3870 --- /dev/null +++ b/gcc/testsuite/g++.dg/graphite/pr41305.C @@ -0,0 +1,332 @@ +// { dg-do compile } +// { dg-options "-O3 -floop-interchange" } + +void __throw_bad_alloc (); + +template void +swap (_Tp & __a, _Tp __b) +{ + __a = __b; +} + +template struct iterator +{ + typedef _Category iterator_category; +}; + +template struct allocator +{ + typedef __SIZE_TYPE__ size_type; + typedef _Tp pointer; + pointer allocate (size_type) + { + __throw_bad_alloc (); + return __null; + } +}; + +template >class unbounded_array; +template >class vector; +template class scalar_vector; +template struct random_access_iterator_base : public iterator +{ +}; + +template struct promote_traits +{ + typedef __typeof__ ((X ())) promote_type; +}; + +template struct scalar_traits +{ + typedef T const_reference; + typedef T reference; +}; + +template struct type_traits : scalar_traits +{ +}; + +struct dense_proxy_tag +{ +}; + +template struct iterator_base_traits; + +template <> struct iterator_base_traits +{ + template struct iterator_base + { + typedef random_access_iterator_base type; + }; +}; + +template struct iterator_restrict_traits +{ + typedef I1 iterator_category; +}; + +template class storage_array +{ +}; + +template struct unbounded_array : public storage_array > +{ + typedef typename ALLOC::size_type size_type; + typedef T & reference; + typedef T *pointer; + unbounded_array (size_type size, ALLOC = ALLOC ()) : alloc_ (), size_ (size) + { + alloc_.allocate (size_); + } + ~unbounded_array () + { + if (size_) + for (;;); + } + size_type + size () const + { + return size_; + } + reference + operator[] (size_type i) + { + return data_[i]; + } + void + swap (unbounded_array & a) + { + ::swap (size_, a.size_); + } + ALLOC alloc_; + size_type size_; + pointer data_; +}; + +template struct scalar_binary_functor +{ + typedef typename promote_traits ::promote_type result_type; +}; + +template struct scalar_plus : public scalar_binary_functor +{ +}; + +template struct scalar_multiplies : public scalar_binary_functor +{ +}; + +template struct scalar_binary_assign_functor +{ + typedef typename type_traits ::reference argument1_type; + typedef typename type_traits ::const_reference argument2_type; +}; + +template struct scalar_assign : public scalar_binary_assign_functor +{ + typedef typename scalar_binary_assign_functor ::argument1_type argument1_type; + typedef typename scalar_binary_assign_functor ::argument2_type argument2_type; + static const bool computed = false; + static void + apply (argument1_type t1, argument2_type t2) + { + t1 = t2; + } +}; + +template struct vector_expression +{ + typedef E expression_type; + const expression_type & + operator () () const + { + return *static_cast (this); + } +}; + +template class vector_container : public vector_expression +{ +}; + +template struct vector_reference : public vector_expression > +{ + typedef typename E::size_type size_type; + typename E::const_reference const_reference; + typedef E referred_type; + vector_reference (referred_type & e) : e_ (e) + { + } + size_type + size () const + { + return expression ().size (); + } + referred_type & + expression () const + { + return e_; + } + referred_type &e_; +}; + +template struct vector_binary : public vector_expression > +{ + typedef E1 expression1_type; + typedef E2 expression2_type; + typedef typename E1::const_closure_type expression1_closure_type; + typedef typename E2::const_closure_type expression2_closure_type; + typedef typename promote_traits ::promote_type size_type; + typedef typename F::result_type value_type; + + vector_binary (const expression1_type & e1, expression2_type e2) : e1_ (e1), e2_ (e2) + { + } + + size_type + size () const + { + return e1_.size (); + } + + class const_iterator : public iterator_base_traits ::iterator_category>::template iterator_base ::type + { + }; + expression1_closure_type e1_; + expression2_closure_type e2_; +}; + +template struct vector_binary_traits +{ + typedef vector_binary expression_type; + typedef expression_type result_type; +}; + +template typename vector_binary_traits >::result_type +operator + (vector_expression &e1, const vector_expression &e2) +{ + typedef typename vector_binary_traits >::expression_type expression_type; + return expression_type (e1 (), e2 ()); +} + +template struct vector_binary_scalar2 : public vector_expression > +{ + typedef vector_binary_scalar2 self_type; + typedef typename E1::size_type size_type; + typedef typename F::result_type value_type; + typedef self_type const_closure_type; +}; + +template struct vector_binary_scalar2_traits +{ + typedef vector_binary_scalar2 result_type; +}; + +template +typename vector_binary_scalar2_traits >::result_type +operator * (vector_expression , T2) +{ +} + +template struct vector_assign_traits +{ + typedef SC storage_category; +}; + +template