1 // { dg-do compile } 2 // { dg-options "-O2 -fstrict-aliasing" } 3 // { dg-additional-options "-Wno-return-type" } 4 5 // This caused an ICE during placement new. 6 7 namespace Pooma { 8 typedef int Context_t; 9 namespace Arch { 10 } context()11 inline Context_t context() { 12 } contexts()13 inline int contexts() { 14 } 15 } 16 template<class DomT, class T, class NewDom1T> struct DomainTraitsScalar { 17 }; 18 template<class T> struct DomainTraits : public DomainTraitsScalar<T, T, T> { 19 }; 20 template<int Dim> class Grid; 21 template<class DT> class DomainBase { 22 }; 23 template<int Dim, class DT> class Domain : public DomainBase<DT> { 24 }; 25 #include <vector> 26 template<> class Grid<1> : public Domain<1, DomainTraits<Grid<1> > > { 27 }; 28 namespace Pooma { 29 class PatchSizeSyncer { 30 typedef Grid<1> Grid_t; 31 PatchSizeSyncer(int contextKey, Grid_t &localGrid); 32 int myContext_m; 33 int numContexts_m; 34 int localKey_m; 35 Grid_t localGrid_m; 36 typedef std::pair<int,Grid_t *> Elem_t; 37 std::vector<Elem_t> gridList_m; 38 }; 39 } 40 namespace Pooma { PatchSizeSyncer(int contextKey,Grid_t & localGrid)41 PatchSizeSyncer::PatchSizeSyncer(int contextKey, Grid_t &localGrid) : 42 myContext_m(Pooma::context()), numContexts_m(Pooma::contexts()), 43 localKey_m(contextKey), localGrid_m(localGrid) { 44 if (myContext_m == 0) gridList_m.reserve(numContexts_m); 45 } 46 } 47