1 // PR c++/79900 - ICE in strip_typedefs
2 // { dg-do compile }
3 // { dg-options "-Wpadded" }
4 
5 template <class> struct A;
6 template <typename> struct B { // { dg-warning "padding struct size to alignment boundary" }
7   long long _M_off;
8   char _M_state;
9 };
10 template <> struct A<char> { typedef B<int> pos_type; };
11 enum _Ios_Openmode {};
12 struct C {
13   typedef _Ios_Openmode openmode;
14 };
15 template <typename, typename _Traits> struct D {
16   typedef typename _Traits::pos_type pos_type;
17   pos_type m_fn1(pos_type, C::openmode);
18 };
19 template class D<char, A<char> >;
20 template <typename _CharT, typename _Traits>
21 typename D<_CharT, _Traits>::pos_type D<_CharT, _Traits>::m_fn1(pos_type x,
22                                                                 C::openmode) { return x; }
23