// { dg-do compile { target i?86-*-* x86_64-*-* } } // { dg-options "-std=c++11 -O3 -march=westmere" } template struct int_ {}; template struct add_const { typedef int type; }; template struct add_reference { typedef int type; }; template struct next { typedef typename T::next type; }; template struct size_impl; template struct msvc_eti_base : T {}; template struct long_ { static const int value = N; typedef long_ next; }; template struct size : msvc_eti_base::template apply> {}; template struct v_item : Base { typedef typename next::type size; }; template struct vector0 { typedef int tag; typedef long_<0> size; }; template <> struct size_impl { template struct apply : Vector::size {}; }; template struct vector3 : v_item>>> {}; template struct layout { typedef vector3 color_space_t; }; template struct kth_element_const_reference_type; template struct iterator_adaptor_get_base; template struct homogeneous_color_base; template struct element_const_reference_type; template struct homogeneous_color_base { Element _v0, _v1, _v2; typename element_const_reference_type::type at(int_<0>) { return _v0; } typename element_const_reference_type::type at(int_<1>) { return _v1; } typename element_const_reference_type::type at(int_<2>) { return _v2; } }; template struct kth_element_const_reference_type< homogeneous_color_base> : add_reference::type> {}; template typename add_reference::type>::type at_c(homogeneous_color_base p1) { return p1.at(int_()); } template class memory_based_step_iterator; template class memory_based_2d_locator; template class image_view; template struct pixel; struct iterator_type_from_pixel { typedef pixel>> *type; }; template struct type_from_x_iterator { typedef image_view< memory_based_2d_locator>> view_t; }; template struct element_const_reference_type : kth_element_const_reference_type< homogeneous_color_base, 3>> {}; template struct pixel : homogeneous_color_base, size::color_space_t>::value> { }; template struct iterator_adaptor_get_base> { typedef Iterator type; }; template class memory_based_2d_locator { public: typedef iterator_adaptor_get_base>> *>>::type x_iterator; }; template class image_view { public: typedef memory_based_2d_locator::x_iterator x_iterator; x_iterator row_begin___trans_tmp_2; x_iterator row_begin(int) { return row_begin___trans_tmp_2; } }; template class image { public: typedef type_from_x_iterator::view_t view_t; image(int); }; template typename image::view_t view(image); template void measure_time(Op p1) { for (;;) p1(); } template struct fill_nongil_t; template struct fill_nongil_t< image_view>> *>>>, P> { typedef image_view>> *>>> View; View _v; P _p; fill_nongil_t(View p1, P) : _v(p1) {} void operator()() { T *first = (T *)_v.row_begin(0); T last; while (first != &last) { first[0] = at_c<0>(_p); first[1] = at_c<1>(_p); first[2] = at_c<2>(_p); first += 3; } } }; template void test_fill(int) { image::view_t __trans_tmp_1; image im(0); __trans_tmp_1 = view(im); measure_time(fill_nongil_t< image_view>> *>>>, pixel>(__trans_tmp_1, pixel())); } void performance_testtest_method() { test_fill, pixel>(0); }