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